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