Is it possible to created a numbered list from a with_sequence loop?

878 views
Skip to first unread message

do...@telnyx.com

unread,
Feb 4, 2015, 12:54:04 PM2/4/15
to ansible...@googlegroups.com
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? 






Chris Church

unread,
Feb 4, 2015, 3:37:01 PM2/4/15
to ansible...@googlegroups.com

--
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/1509f2b1-8e74-41d4-854f-c46f012e2812%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages