This worked for me for a specific bridge domain that had multiple subnets.
I created a loop to loop over the lists and map the subnet attribute.
The results looked like this
tasks:
- name: gather info on a subnet
aci_bd_subnet:
host: 192.168.1.1
username: admin
password: "{{password}}"
tenant: AciTest5
bd: bd-test5
state: query
validate_certs: no
delegate_to: localhost
register: results
- name: print results
debug:
msg: "{{item}}"
*loop: "{{results.current[0].fvBD.children[:] |
map(attribute='fvSubnet.attributes.rn') | list }}"*
TASK [print results]
**********************************************************************************************************************************
ok: [192.168.1.1] => (item=subnet-[10.55.2.1/24]) => {
"msg": "subnet-[10.55.2.1/24]"
}
ok: [192.168.1.1] => (item=subnet-[10.56.2.1/24]) => {
"msg": "subnet-[10.56.2.1/24]"
}
ok: [192.168.1.1] => (item=subnet-[10.57.2.1/24]) => {
"msg": "subnet-[10.57.2.1/24]"
}
On Mon, Mar 23, 2020 at 3:55 AM Dick Visser <[email protected]> wrote:
> 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
> <https://groups.google.com/d/msgid/ansible-project/CAL8fbwN-9TaVU95gAJVR8SCLkBO6i_pwE9f3zJcmDFyy%3DDBHNQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
--
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/CAFFkYJ%2BVS_OBUmShF8k257xDmoJFo3XtTpVUXs%3DoWZp9TjS0jQ%40mail.gmail.com.