merge 2 arrays into array of dictionaries

56 views
Skip to first unread message

abel.makko...@gmail.com

unread,
Dec 16, 2015, 2:43:11 PM12/16/15
to Ansible Project
I have 2 arrays

"containers": [
            "ContainerA", 
            "ContainerA", 
            "ContainerB", 
            "ContainerB"
        ]

"apps": [
            "app2", 
            "app1", 
            "app2", 
            "app1"
        ]


I would like to merge them into an array of dictionaries like this ( I assume with set_fact ):

services:
- { container: 'ContainerA', app: 'app2' }
- { container: 'ContainerA', app: 'app1' }
- { container: 'ContainerB', app: 'app2' } 
- { container: 'ContainerB', app: 'app1' }

How can I do that?

Matt Martz

unread,
Dec 16, 2015, 3:03:52 PM12/16/15
to ansible...@googlegroups.com
How do you plan on using this data.  Maybe there is a different way to achieve your result, because it won't be easy or straight forward to get what you want.

Maybe with_together on a task could give you what you want instead:

- debug: var=item
  with_together:
    - apps
    - containers



--
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/234b0651-72ac-4cdf-ba01-2283cdc5f425%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
Matt Martz
@sivel
sivel.net

Abel Makkonen Tesfaye

unread,
Dec 16, 2015, 3:20:06 PM12/16/15
to ansible...@googlegroups.com
I plan to use it in a template like so:
{% for source in services %}
container={{source.container}}
app={{source.app}}
{% endfor %}

Matt Martz

unread,
Dec 16, 2015, 4:59:34 PM12/16/15
to ansible...@googlegroups.com
Perhaps the following will achieve your goal:

{% for source in lookup('together', containers, apps, wantlist=True) %}
container={{ source.0 }}
app={{ source.1 }}
{% endfor %}




For more options, visit https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages