I am trying to connect to an host which is nothing but an cisco ios switch which I get by executing an powershell script. So basically the switch is output from an xml string from an powershell script. I am able to successfully receive the switch name from Ansible output. Now my question is how do I connect to the switch and see the details of the switch using show commands.
This my playbook:
hosts: localhost
connection: local
tasks:
- name: Parse the XML output
xml:
xmlstring: "{{ hostvars[groups['win'][0]]['splat']['stdout'] }}"
xpath: "/HostDiscovery/Host/Connection/NetworkDevice[Candidate='true' and Uplink='false']/DeviceName"
content: text
register: data
- debug:
msg: "{{ item.DeviceName }}"
with_items: "{{ data.matches }}"
This will give an output as follows
TASK [debug]
************************************************************************************************************************************************
task path: /etc/ansible/splat_executeps_script.yml:21 ok: [localhost] => (item={u'DeviceName': u'abc'}) => { "msg": "abc" }
where abc is the host to which I need to connect to in the subsequent task in the same playbook. I have tried writing something as below in the same yaml file
hosts: "{{ item.DeviceName }}"
connection: network_cli
tasks:
- name: Show VLAN
ios_command:
commands:
- show vlan brief | include {{id}}
- show interfaces {{interface}} status
register: vlan
- debug: var=vlan.stdout_lines
with_items: "{{ data.matches }}"
But this does not run and gives the below error:
META: ran handlers ERROR! The field 'hosts' has an invalid value, which includes an undefined variable. The error was: 'item' is undefined
The error appears to have been in '/etc/ansible/splat_executeps_script.yml': line 27, column 3, but may be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
hosts: "{{ item.DeviceName }}" ^ here
How can I correct the details, any help would be appreciated? Please note that the device which I am trying to connect in the subsequent task would be dynamically generated by the xml which is returned from PS script.