I’m playing with Ansible+Arista and I’m able to receive JSON back about the arista device. As an example, I am looking at interface status. While I am able to receive and display information about a single value/pair from the array, how can I loop to receive information on every item in the array?
Example JSON received:
TASK: [debug var=eos_command_output] ******************************************
ok: [example.host] => {
“eos_command_output”: {
“changed”: false,
“invocation”: {
“module_args”: “”,
“module_name”: “eos_command”
},
“output”: [
{
“command”: “show interfaces status”,
“response”: {
“interfaceStatuses”: {
“Ethernet1”: {
“autoNegotiateActive”: false,
“autoNegotigateActive”: false,
“bandwidth”: 10000000000,
“description”: “example.description|span”,
“duplex”: “duplexFull”,
“interfaceType”: “10GBASE-SR”,
“linkStatus”: “connected”,
“vlanInformation”: {
“interfaceForwardingModel”: “bridged”,
“interfaceMode”: “tap”
}
},
“Ethernet10”: {
“autoNegotiateActive”: false,
“autoNegotigateActive”: false,
“bandwidth”: 10000000000,
“description”: “”,
“duplex”: “duplexFull”,
“interfaceType”: “Not Present”,
“linkStatus”: “errdisabled”,
“vlanInformation”: {
“interfaceForwardingModel”: “bridged”,
“interfaceMode”: “bridged”,
“vlanId”: 1
}
Working example:
- name: show the optic in Ethernet1
debug: msg=“Optic in Ethernet1- {{eos_command_output[‘output’][0][‘respons
e’][‘interfaceStatuses’][‘Ethernet1’][‘interfaceType’] }}”
yields:
ok: [example.host1] => {
“msg”: “Optic in Ethernet1- Not Present”
}
ok: [example.host2] => {
“msg”: “Optic in Ethernet1- 10GBASE-SR”
What I’m trying to do:
- name: show the optic in each port
debug: msg="Optic in {{ eos_command_output[‘output’][0]['respons
e’][‘interfaceStatuses’] }} - {{ interfaceType }}
This doesn’t work, and so here I am.
Desired output:
ok: [example.host1] => {
“msg”: “Optic in Ethernet1- Not Present”
“msg”: “Optic in Ethernet10- Not Present”
}
ok: [example.host2] => {
“msg”: “Optic in Ethernet1- 10GBASE-SR”
“msg”: “Optic in Ethernet10- Not Present”
Thanks!
Leo