Hi
This is slightly more involved, you can use the json_query filter, it has a
little bit different syntax.
If you are going to iterate over a number of those subnets, I suggest
creating a dedicated variable for that.
Something like this:
tasks:
- set_fact:
subnets: "{{ subnet_output |
json_query('current[0].fvTenant.children[0].fvBD.children[].fvSubnet.attributes.ip')
}}"
- debug: var=subnets
- debug:
msg: "{% for subnet in subnets %}Subnet: {{ subnet }}\n{% endfor %}"
On Mon, 23 Mar 2020 at 06:36, Albert Short <[email protected]> wrote:
> Dick that worked perfectl!
> My next question is how would I get the same response to for several
> subnets without having to use the '0' in the debug message?
>
> - name: Debug message for ACI
> debug:
> msg:
> - "Subnet :
> {{subnet_output.current.0.fvTenant.children.0.fvBD.children.0
> .fvSubnet.attributes.ip}}"
> - "Subnet :
> {{subnet_output.current.0.fvTenant.children.0.fvBD.children.1
> .fvSubnet.attributes.ip}}"
> - "Subnet :
> {{subnet_output.current.0.fvTenant.children.0.fvBD.children.2
> .fvSubnet.attributes.ip}}"
>
> Regards
>
>
> On Sunday, 22 March 2020 22:10:24 UTC+2, Dick Visser wrote:
>>
>> Hi
>>
>>
>> On Sun, 22 Mar 2020 at 19:11, Albert Short <[email protected]> wrote:
>>
>> The error is pretty clear:
>>
>> > fatal: [apic2]: FAILED! =>
>> > msg: |-
>> > The task includes an option with an undefined variable. The error
>> was: 'list object' has no attribute 'fvTenant'
>> >
>> > The error appears to be in
>> '/home/network_automation/trainer/aci_debug.yml': line 21, column 7, but may
>> > be elsewhere in the file depending on the exact syntax problem.
>>
>> Your variable is a list of one item, which itself is deeply nested.
>> Try this:
>>
>>
>> - debug:
>> msg: "Subnet: {{
>> current.0.fvTenant.children.0.fvBD.children.0.fvSubnet.attributes.ip }}"
>>
>>
>> this is the 'ip' key which has the value that you are looking for -
>> not sure if this correct?
>>
>>
>> On Sun, 22 Mar 2020 at 19:11, Albert Short <[email protected]> wrote:
>>
>>> Hello all,
>>>
>>> I hope we are all well in this trying period across the world.
>>>
>>> I am to debug an ACI query to display a simple output, but having
>>> trouble getting the correct syntax to provide the output I desire.
>>>
>>> My Ansible Script to query a BD & the debug script to *try *to display
>>> just the subnet information.
>>>
>>> - name: ACI Subnet query allocated to BD
>>> hosts: apics
>>> gather_facts: no
>>>
>>> tasks:
>>> - name: Query BD
>>> aci_bd_subnet:
>>> host: "{{ ansible_host }}"
>>> username: "{{ ansible_user }}"
>>> password: "{{ ansible_password }}"
>>> validate_certs: no
>>> tenant: tn_TRAINER
>>> state: query
>>> register: subnet_output
>>>
>>> - name: Debug message for ACI
>>> debug:
>>> msg: "Subnet : {{subnet_output.current}}"
>>>
>>> Now my output:
>>>
>>>
>>> $ ansible-playbook aci_debug.yml
>>>
>>> PLAY [ACI Subnet query allocated to BD]
>>> ************************************************************************************************************************************************************************************************
>>>
>>> TASK [Query BD]
>>> ************************************************************************************************************************************************************************************************************************
>>> ok: [apic2]
>>>
>>> TASK [Debug message for ACI]
>>> ***********************************************************************************************************************************************************************************************************
>>> ok: [apic2] =>
>>> msg: 'Subnet : [{u''fvTenant'': {u''attributes'': {u''dn'':
>>> u''uni/tn-tn_TRAINER'', u''lcOwn'': u''local'', u''ownerKey'': u'''',
>>> u''name'': u''tn_TRAINER'', u''descr'': u''Trainer Tenant'',
>>> u''extMngdBy'': u'''', u''annotation'': u'''', u''status'': u'''',
>>> u''monPolDn'': u''uni/tn-common/monepg-default'', u''modTs'':
>>> u''2020-03-21T09:32:40.162+00:00'', u''ownerTag'': u'''', u''childAction'':
>>> u'''', u''nameAlias'': u'''', u''uid'': u''15374''}, u''children'':
>>> [{u''fvBD'': {u''attributes'': {u''uid'': u''15374'', u''extMngdBy'':
>>> u'''', u''arpFlood'': u''yes'', u''seg'': u''16482194'', u''mcastAllow'':
>>> u''no'', u''ipv6McastAllow'': u''no'', u''intersiteL2Stretch'': u''no'',
>>> u''unicastRoute'': u''yes'', u''unkMcastAct'': u''flood'',
>>> u''OptimizeWanBandwidth'': u''no'', u''v6unkMcastAct'': u''flood'',
>>> u''descr'': u'''', u''hostBasedRouting'': u''no'', u''llAddr'': u''::'',
>>> u''monPolDn'': u''uni/tn-common/monepg-default'', u''modTs'':
>>> u''2020-03-22T17:41:28.775+00:00'', u''scope'': u''2228224'',
>>> u''rn'': u''BD-bd_VLAN101'', u''type'': u''regular'',
>>> u''ipLearning'': u''yes'', u''status'': u'''', u''vmac'':
>>> u''not-applicable'', u''nameAlias'': u'''', u''configIssues'': u'''',
>>> u''bcastP'': u''225.1.27.48'', u''mac'': u''00:22:BD:F8:19:FF'',
>>> u''epMoveDetectMode'': u'''', u''ownerTag'': u'''',
>>> u''intersiteBumTrafficAllow'': u''no'', u''annotation'': u'''',
>>> u''childAction'': u'''', u''lcOwn'': u''local'', u''ownerKey'': u'''',
>>> u''name'': u''bd_VLAN101'', u''epClear'': u''no'', u''unkMacUcastAct'':
>>> u''proxy'', u''multiDstPktAct'': u''bd-flood'', u''limitIpLearnToSubnets'':
>>> u''yes'', u''mtu'': u''inherit'', u''pcTag'': u''32771''}, u''children'':
>>> [{u''fvSubnet'': {u''attributes'': {u''status'': u'''', u''lcOwn'':
>>> u''local'', u''uid'': u''15374'', u''descr'': u'''', u''extMngdBy'': u'''',
>>> u''ip'': u''192.168.101.1/24'', u''ctrl'': u'''', u''preferred'':
>>> u''no'', u''name'': u'''', u''virtual'': u''no'', u''nameAlias'': u'''',
>>> u''scope'': u''private'', u''monPolDn'': u''uni/tn-common/monepg-default'',
>>> u''rn'': u''subnet-[192.168.101.1/24]' <http://192.168.101.1/24%5D'>',
>>> u''modTs'': u''2020-03-22T17:41:28.723+00:00'', u''annotation'': u'''',
>>> u''childAction'': u''''}}}]}}]}}]'
>>>
>>> PLAY RECAP
>>> *****************************************************************************************************************************************************************************************************************************
>>> apic2 : ok=2 changed=0 unreachable=0
>>> failed=0 skipped=0 rescued=0 ignored=0
>>>
>>> The verbose output for the 'Query BD' task looks as follows:
>>>
>>> TASK [Query BD]
>>> ************************************************************************************************************************************************************************************************************************
>>> ok: [apic2] => changed=false
>>> ansible_facts:
>>> discovered_interpreter_python: /usr/bin/python
>>> current:
>>> - fvTenant:
>>> attributes:
>>> annotation: ''
>>> childAction: ''
>>> descr: Trainer Tenant
>>> dn: uni/tn-tn_TRAINER
>>> extMngdBy: ''
>>> lcOwn: local
>>> modTs: '2020-03-21T09:32:40.162+00:00'
>>> monPolDn: uni/tn-common/monepg-default
>>> name: tn_TRAINER
>>> nameAlias: ''
>>> ownerKey: ''
>>> ownerTag: ''
>>> status: ''
>>> uid: '15374'
>>> children:
>>> - fvBD:
>>> attributes:
>>> OptimizeWanBandwidth: 'no'
>>> annotation: ''
>>> arpFlood: 'yes'
>>> bcastP: 225.1.27.48
>>> childAction: ''
>>> configIssues: ''
>>> descr: ''
>>> epClear: 'no'
>>> epMoveDetectMode: ''
>>> extMngdBy: ''
>>> hostBasedRouting: 'no'
>>> intersiteBumTrafficAllow: 'no'
>>> intersiteL2Stretch: 'no'
>>> ipLearning: 'yes'
>>> ipv6McastAllow: 'no'
>>> lcOwn: local
>>> limitIpLearnToSubnets: 'yes'
>>> llAddr: '::'
>>> mac: 00:22:BD:F8:19:FF
>>> mcastAllow: 'no'
>>> modTs: '2020-03-22T17:41:28.775+00:00'
>>> monPolDn: uni/tn-common/monepg-default
>>> mtu: inherit
>>> multiDstPktAct: bd-flood
>>> name: bd_VLAN101
>>> nameAlias: ''
>>> ownerKey: ''
>>> ownerTag: ''
>>> pcTag: '32771'
>>> rn: BD-bd_VLAN101
>>> scope: '2228224'
>>> seg: '16482194'
>>> status: ''
>>> type: regular
>>> uid: '15374'
>>> unicastRoute: 'yes'
>>> unkMacUcastAct: proxy
>>> unkMcastAct: flood
>>> v6unkMcastAct: flood
>>> vmac: not-applicable
>>> children:
>>> - fvSubnet:
>>> attributes:
>>> annotation: ''
>>> childAction: ''
>>> ctrl: ''
>>> descr: ''
>>> extMngdBy: ''
>>> ip: 192.168.101.1/24
>>> lcOwn: local
>>> modTs: '2020-03-22T17:41:28.723+00:00'
>>> monPolDn: uni/tn-common/monepg-default
>>> name: ''
>>> nameAlias: ''
>>> preferred: 'no'
>>> rn: subnet-[192.168.101.1/24]
>>> scope: private
>>> status: ''
>>> uid: '15374'
>>> virtual: 'no'
>>>
>>>
>>>
>>>
>>> I am trying to get a debug message similar to:
>>> msg: 'Subnet : 192.168.101.1/24'
>>> But I can't work out how to do that from the registered output
>>> I have tried:
>>>
>>>
>>> - name: Debug message for ACI
>>> debug:
>>> msg: "Subnet : {{subnet_output.current.fvTenant}}"
>>>
>>> But get this meesage:
>>>
>>> $ ansible-playbook aci_debug.yml
>>>
>>> PLAY [ACI Subnet query allocated to BD]
>>> ************************************************************************************************************************************************************************************************
>>>
>>> TASK [Query BD]
>>> ************************************************************************************************************************************************************************************************************************
>>> ok: [apic2]
>>>
>>> TASK [Debug message for ACI]
>>> ***********************************************************************************************************************************************************************************************************
>>> fatal: [apic2]: FAILED! =>
>>> msg: |-
>>> The task includes an option with an undefined variable. The error
>>> was: 'list object' has no attribute 'fvTenant'
>>>
>>> The error appears to be in
>>> '/home/network_automation/trainer/aci_debug.yml': line 21, column 7,
>>> but may
>>> be elsewhere in the file depending on the exact syntax problem.
>>>
>>> The offending line appears to be:
>>>
>>>
>>> - name: Debug message for ACI
>>> ^ here
>>>
>>> PLAY RECAP
>>> *****************************************************************************************************************************************************************************************************************************
>>> apic2 : ok=1 changed=0 unreachable=0
>>> failed=1 skipped=0 rescued=0 ignored=0
>>>
>>>
>>> I have tried to find an answer but not managed to get a solution. Anyone
>>> got some guidance?
>>>
>>> Thanks & be safe
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Ansible Project" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/ansible-project/1a14f8d3-1463-44d0-9e49-f36f1a1c22ac%40googlegroups.com
>>> <https://groups.google.com/d/msgid/ansible-project/1a14f8d3-1463-44d0-9e49-f36f1a1c22ac%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>
>>
>> --
>> Dick Visser
>> Trust & Identity Service Operations Manager
>> GÉANT
>>
> --
> You received this message because you are subscribed to the Google Groups
> "Ansible Project" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/a4f79183-1074-48d0-9bd3-c235a5d3b809%40googlegroups.com
> <https://groups.google.com/d/msgid/ansible-project/a4f79183-1074-48d0-9bd3-c235a5d3b809%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
--
Dick Visser
Trust & Identity Service Operations Manager
GÉANT
--
You received this message because you are subscribed to the Google Groups
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/CAL8fbwN-9TaVU95gAJVR8SCLkBO6i_pwE9f3zJcmDFyy%3DDBHNQ%40mail.gmail.com.