Looping over JSON output from Arista

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