how i can get same results in ansible with loop?
I want to use
- debug:
msg: "{{ item.0 }} {{ item.1 }}"
loop: "{{ gs_hostname | product(wl_hostname) | list }}"
But i get:
ok: [localhost] => { "msg": { "gs-01": "wl-01", "gs-02": "wl-02", "gs-03": null, "gs-04": null } }
What I expect:
from itertools import cycle
gs_hostname = ["gs01", "gs02", "gs03", "gs04"]
wl_hostname = ["wl01", "wl02"]
for a,b in zip(gs_hostname, cycle(wl_hostname)):
print (a,b)
result:
gs01 wl01 gs02 wl02 gs03 wl01 gs04 wl02
I found another solution:
- hosts: localhost
connection: local
gather_facts: False
vars:
gs_hostname: [gs-01, gs-02, gs-03, gs-04, gs-05, gs-06, gs-07]
wl_hostname: [wl-01, wl-02, wl-03]
tasks:
- debug:
msg: "{% set wl_list = wl_hostname %}
{% set row_class = cycler(* wl_list) %}
{% for gs in gs_hostname %}{{ gs }} - {{ row_class.next() }}{% endfor %}"
More info here.