The goal of this post is to provide you with a simple way to utilize Ansible 2.x and obtain data from Cisco IOS devices by running “show” commands. Github Reference.
Ansible Installation:
Before starting, make sure you have ansible installed.
Create a working directory:
mkdir ansible_play cd ansible_play
Create the following 4 files within the “ansible_play” directory:
ansible.cfg hosts secrets.yml show_code.yml
Among the 4 files provided in this example, the “hosts” and “secrets.yml” file would have to be altered to suit your requirements. The other 2 files, “ansible.cfg” and “show_code.yml” can be used as-is.
The contents of the above files will be like this:
$ cat ansible.cfg
[defaults] hostfile = ./hosts host_key_checking=False timeout = 5
For now, use the contents as provided above for the “ansible.cfg” file.
$ cat hosts
[ios] switch1
The hosts file will have the switches/routers that you would like to use for running the ansible-playbook. In my case, I am using “switch1”. The 1st line “[ios]” is the name of the hosts that will be referenced in the ansible-playbook.
$ cat secrets.yml
--- creds: username: cisco password: ciscopassword auth_pass: ciscoauth
This file contains the login information required to access the devices in the hosts file.
$ cat show_code.yml
--- - hosts: ios gather_facts: no 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: SHOW VERSION ios_command: provider: "{{ provider }}" commands: - show version | i Version register: write - debug: var=write.stdout_lines
Executing the ansible playbook:
$ ansible-playbook show_code.yml
PLAY [ios] ********************************************************************* TASK [OBTAIN LOGIN CREDENTIALS] ************************************************ ok: [switch1] TASK [DEFINE PROVIDER] ********************************************************* ok: [switch1] TASK [SHOW VERSION] ************************************************************ ok: [switch1] TASK [debug] ******************************************************************* ok: [switch1] => { "write.stdout_lines": [ [ "Cisco IOS Software, Catalyst 4500 L3 Switch Software (cat4500e-ENTSERVICESK9-M), Version 15.2(2)E3, RELEASE SOFTWARE (fc3)" ] ] } PLAY RECAP ********************************************************************* switch1 : ok=4 changed=0 unreachable=0 failed=0
Vijay, How do we automate F5 VIP creation via Ansible.. need your guidance,
Have you had the change to look into this https://clouddocs.f5.com/products/orchestration/ansible/devel/usage/playbook_tutorial.html ?