all values from a YAML dictionary like structure

25 views
Skip to first unread message

Valerio Crini

unread,
Mar 11, 2016, 10:52:30 AM3/11/16
to Ansible Project
Hi all,
I'd like to extract from a yaml complex dictionary as 

node:
        host1:
                - { id: '1' }
                - { id: '2' }

all values for 'id' for 'host1'

in order to convert this snipped of code from

id_list: {{ xxx }}

in

id_list:  '1' '2'

in python I can do the following


>>> node= {'test1':[{'id':'1'},{'id':'2'}]}
>>> node
{'test1': [{'id': '1'}, {'id': '2'}]}
>>> " ".join(["'%s'"% x['id'] for x in node['test1']])   #this is xxx
"'1' '2'"

but in ansible how can obtain the same?

Matt Martz

unread,
Mar 11, 2016, 2:17:17 PM3/11/16
to ansible...@googlegroups.com
You can use the `map` filter, and the `join` filter.

"{{ node['test1']|map(attribute='id')|join(' ') }}"


--
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 ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/028602aa-642d-4157-b096-f6b384e32126%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
Matt Martz
@sivel
sivel.net

Valerio Crini

unread,
Mar 14, 2016, 8:04:15 AM3/14/16
to Ansible Project
Matt, you saved my day!

With your solution

 "'{{ node['test1'] | map(attribute='id') | join('\' \'') }}'"

I was able to do it,
thanks a lot!
Reply all
Reply to author
Forward
0 new messages