Ansible Switch Configuration
Author: R Zach FeeserAnsible is able to change the configuration of network devices. In this exercise, we will change the configuration of an Arista Switch.
Step 1 - cat the ansible hosts file
student@beachhead:
cat hosts
172.16.2.10
172.16.2.20
Step 2 - Check ssh connectivity to the first host. It works!
student@beachhead:
ssh admin@172.16.2.10
Password :
Last login: Wed Aug 22 19:13:24 2018 from 172.16.2.100 SW1>
SW1>
SWl>exit
Connection to 172.16.2.10 closed.
Step 3 - Check ssh connectivity to the second host. It works too!
student@beachhead:
ssh admin@172.16.2.20
student@beachhead:-/net01$
ssh admin@172.16.2.20
Password :
Last login: Wed Aug 22 19:16:07 2018 from 172.16.2.100
SW2>
SW2>exit
Connection to 172.16.2.20 closed.
Step 4 - cat the ansible playbook and study it line by line.
Ultimately, all this playbook is going to do is change the login banner, a very safe thing to do as a first attempt!
student@beachhead:$
cat netOl.yml
- name: My Arista Playbook
hosts: all
gatherfacts: false
vars:
ansibleconnection: networkcli
ansible network os:
eos ansible_become: yes
ansiblebecomemethod: enable
ansible user: admin
ansible_ssh_pass: alta3
tasks:
- name: configure the login banner
eosbanner:
authorize: yes
banner: login
text: |
Congrats! You set a banner using an Ansible EOS module.
Notice how YAML formatting lets us do multi-line strings
state: present
Step 5 - Check out the EOS ansible module documentation
https://docs.ansible.com/ansible/2.10/collections/arista/eos/eos_banner_module.html
Step 6 - Run the playbook. It works!
student@beachhead:$
ansible-playbook -i hosts netOl.yml
PLAY [My Arista Playbook] ****************************************************
TASK [configure the login banner] ********************************************
changed: [172.16.2.10]"
changed: [172.16.2.20]
PLAY RECAP *******************************************************************
172.16.2.10 : ok=l changed=1 unreachable=0 failed=0
172.16.2.20 : ok=l changed=l unreachable=0 failed=0
Step 7 - Confirm that the changes were made. Testing shows that it worked!
student@beachhead:$
ssh admin@172.16.2.10
Congrats! You set a banner using an Ansible EOS module
Notice how YAML formatting lets us do multi-line strings
Password:
student@beachhead:$
ssh admin@172.16.Z-20
Congrats! You set a banner using an Ansible EOS module
Notice how YAML formatting lets us do multi-line strings
Password:
Step 8 - Demonstrate the power of ansible by making a single parameter change.
- name: My Arista Playbook
hosts: all
gatherfacts: false
vars:
ansibleconnection: networkcli
ansible network os:
eos ansible_become: yes
ansiblebecomemethod: enable
ansible user: admin
ansible_ssh_pass: alta3
tasks:
- name: configure the login banner
eosbanner:
authorize: yes
banner: login
text: |
Congrats! You set a banner using an Ansible EOS module.
Notice how YAML formatting lets us do multi-line strings
state: present # <----- CHANGE THIS LINE TO state: absent
Step 9 - Run the playbook again.
student@beachhead:$
ansible-playbook -i hosts netOl.yml
PLAY [My Arista Playbook] ****************************************************
TASK [configure the login banner] ********************************************
changed: [172.16.2.10]"
changed: [172.16.2.20]
PLAY RECAP *******************************************************************
172.16.2.10 : ok=l changed=1 unreachable=0 failed=0
172.16.2.20 : ok=l changed=l unreachable=0 failed=0
Step 10 - Confirm that the changes were made. No more login banner. It worked!
student@beachhead:$
ssh admin@172.16.2.10
Password: