Discussion:
[ansible-project] Accumulating a list in Ansible
Kevin Raison
2015-07-17 23:32:12 UTC
Permalink
Hello, group. I am still a novice with Ansible, so perhaps my approach is
flawed, so if there is a better way, I am happy to hear about it. I have a
situation where I need to accumulate values into an Ansible list variable
on a role-by-role basis, and then use the contents of that list in another
role in order to populate a config file template. So, suppose I have these
roles:

- roles:
- service1
- service2
- service3
- make-config-file

And a variable 'services'. I would like to end up with services having a
value of [ service1, service2, service3 ] by the time 'make-config-file' is
executed so that it can write those values out to the config file.

So, the question is, how do I push a value onto the 'services' list in each
role? I understand how to get the values from the list into the config
file, I am just not sure how to accumulate a list in Ansible.

Thanks,
Kevin
--
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-project+***@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/f95cfbd7-e97f-4d50-93af-9bd62d730e6b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Brian Coca
2015-07-19 02:52:40 UTC
Permalink
you can use union filter:

services: "{{service1|union(service2)|union(service3)}}"
--
Brian Coca
--
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-project+***@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/CAJ5XC8mYNPTEatcFZ_fHV5xsdOSzaj%2B29Eijo6ZXKveYRWAW2g%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
Abhijit Menon-Sen
2015-07-20 01:05:59 UTC
Permalink
Post by Brian Coca
services: "{{service1|union(service2)|union(service3)}}"
Brian, thanks for the tip.

Is there any way to do the moral equivalent of "list_behaviour=append"?
In other words, to be able to append items to an already-declared list?

I originally wanted this so that roles could declare all the packages
they needed, and they could be installed in one go by a common task.
There are many other (better) reasons, e.g. modifying my PostgreSQL
configuration if I'm also installing the postgres_replication role.

Would anyone else find this useful?

-- Abhijit

P.S. I'm open to suggestions for some way to do this using a local
plugin of some sort. I just want to get it to work somehow.
--
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-project+***@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/20150720010559.GA6317%40toroid.org.
For more options, visit https://groups.google.com/d/optout.
Loading...