Ansible has built in variables which you can come in handy with some Playbooks. They can be viewed using the following Ad-Hoc command:

ansible all -i 192.168.0.211, -m debug -a "msg="

or this Task:

---
- name: Display vars
  debug: msg=

Note that the latter provides much more information than the former.

When the above Task is run, one of the pieces of information it provides is this:

"inventory_hostname_short": "R2",

We can then use this information as a variable in our other Tasks, like so:

---
- name: ios_comamnd - Run the 'show interfaces' command
  ios_command:
    provider: ""
    authorize: yes
    commands:
      - show run
  register: show_out

-  local_action: copy content="{{ show_out.stdout_lines[0]|join('\n') }}" dest="/tmp/{{inventory_hostname_short}}_show_run.txt"

The result is that each device will automatically output their show run  into a file which matches their hostname, as per the output below:

$ ls -l /tmp/R[12]*
-rw-rw-r-- 1 will will 1654 Apr 16 20:58 /tmp/R1_output_fact.txt
-rw-rw-r-- 1 will will 1654 Apr 16 20:58 /tmp/R2_output_fact.txt

As always, if you have any questions or have a topic that you would like me to discuss, please feel free to post a comment at the bottom of this blog entry, e-mail at will@oznetnerd.com, or drop me a message on Reddit (OzNetNerd).

Note: The opinions expressed in this blog are my own and not those of my employer.

Leave a comment