with_indexed_items - http://docs.ansible.com/playbooks_loops.html#looping-over-a-list-with-an-index
On Wed, Feb 4, 2015 at 12:54 PM, <[email protected]> wrote: > I'm attempting to create a playbook for zookeeper. The playbook is > designed as a part of a role which is deployed after an AWS provisioning > takes place. Due to the configuration of zookeeper, each host requires a > zookeeper id (myid). This id is unique to each host in your cluster and > must be applied before starting the service and for configuring the config > file of zookeeper. I've seen some previous examples using a host_var that > is configured in the inventory file for the zookeeper group, however, this > will not work correctly with my implementation because I am using AWS to > provision the hosts. My plan was to create a numbered list [1,2,3] for the > length of the group list, and then use with_together to loop through and > assign the ids to each host. See below for an example. > > - debug: > msg: "My host is {{ item.0 }} and my id is {{ item.1 }}" > run_once: true > with_together: > - "{{ groups['newec2hosts'] }}" > - [1,2,3] > > The example above works fine since the list of numbers is provided, > however, I'd like to keep this dynamic so I don't need to be constantly > changing the list of ids when I want to add a host to the cluster. The more > optimal solution is something like the following > > - set_fact: > zid_test: "{{ item }}" > with_sequence: "count={{ groups['newec2hosts'] | length }}" > > - debug: > msg: "Test: {{ item.0 }} and id {{ item.1 }}" > run_once: true > with_together: > - "{{ groups['newec2hosts'] }}" > - "{{ zid_test }}" > > That doesn't work since the fact is only set to the total length of the > group list (3) and not in the order list [1,2,3] > > Is there a way to accomplish this? Or perhaps another way of assigning the > ids dynamically to each host? > > > > > > > -- > 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 post to this group, send email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/ansible-project/1509f2b1-8e74-41d4-854f-c46f012e2812%40googlegroups.com > <https://groups.google.com/d/msgid/ansible-project/1509f2b1-8e74-41d4-854f-c46f012e2812%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- 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 post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/CAH%2BKTJ7yMc6kpSOdLPvQaQ5zgQeGWEhEF7SEBcUJC2aO%3DFjSrw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
