The goal of this article is to explain configuration implementation on Cisco IOS after the config has been generated as shown in Ansible Config Generator III:
config-implementation.yml
---
- hosts: switch
gather_facts: true
connection: local
tasks:
- name: OBTAIN LOGIN CREDENTIALS
include_vars: secrets.yml
- name: DEFINE PROVIDER
set_fact:
provider:
host: "{{ inventory_hostname }}"
username: "{{ creds['username'] }}"
password: "{{ creds['password'] }}"
auth_pass: "{{ creds['auth_pass'] }}"
- name: CONFIGURE INTERFACE
ios_config:
provider: "{{ provider }}"
authorize: yes
lines:
- "{{ lookup('file', './config-output/{{ inventory_hostname }}.conf') }}"
The “hosts” file contains the switch names:
[switch]
switch-1
switch-2
switch-3
switch-4
secrets.yml
---
creds:
username: cisco
password: ciscopassword
auth_pass: ciscoauthpassword
“./config-output/” directory contains the following files:
switch-1.conf
switch-2.conf
switch-3.conf
switch-4.conf
The inventory file (hosts) contains the switches in which the configuration from corresponding file name will be added. “switch-1.conf” file contents will be utilized to configure “switch-1” so on and so forth.
~/ansible_play/config-output$ cat switch-1.conf
int Gi1/1
switchport access vlan 195
int Gi1/10
switchport access vlan 188
~/ansible_play/config-output$ cat switch-2.conf
int Gi1/2
switchport access vlan 295
int Gi1/20
switchport access vlan 288
~/ansible_play/config-output$ cat switch-3.conf
int Gi1/3
switchport access vlan 395
int Gi1/30
switchport access vlan 388
~/ansible_play/config-output$ cat switch-4.conf
int Gi1/4
switchport access vlan 495
int Gi1/40
switchport access vlan 488