Reputation: 793
I have a following dictionary in default/main.yml
servers_as:
ABxxxxx1:
- server1-WASN_xcv_02.service
- server2-WASN_xcv_01.service
- server2-WASN_xcv_02.service
CBxxxx2:
- server1-abcd_02.service
- server1-abcd_03.service
- server2-abcd_01.service
- server2-abcd_02.service
- server2-abcd_03.service
I have tried to output each value with length, but it just gave me the last value. How can i run it from 0-(servers_as | legnth )
- name: check output list
debug:
msg: "{{ item.value[ lookup('dict', servers_as) | length] }}"
loop: "{{ lookup('dict', servers_as) }}"
when:
- "item.key in inventory_hostname"
Expected output is the name of each value in order to start services:
- name: Start all services
systemd:
name: "{{ item.value }}.service"
state: started
loop: "{{ lookup('dict', servers_as) }}"
when:
- "item.key in inventory_hostname"
Upvotes: 2
Views: 3851
Reputation: 67959
As a hint on how to iterate the lists
- name: Start all services
debug:
msg: "Start {{ item }}"
loop: "{{ servers_as[inventory_hostname]|d([]) }}"
gives
ok: [ABxxxx1] => (item=server1-WASN_xcv_02.service) =>
msg: Start server1-WASN_xcv_02.service
ok: [ABxxxx1] => (item=server2-WASN_xcv_01.service) =>
msg: Start server2-WASN_xcv_01.service
ok: [ABxxxx1] => (item=server2-WASN_xcv_02.service) =>
msg: Start server2-WASN_xcv_02.service
ok: [CBxxxx2] => (item=server1-abcd_02.service) =>
msg: Start server1-abcd_02.service
ok: [CBxxxx2] => (item=server1-abcd_03.service) =>
msg: Start server1-abcd_03.service
ok: [CBxxxx2] => (item=server2-abcd_01.service) =>
msg: Start server2-abcd_01.service
ok: [CBxxxx2] => (item=server2-abcd_02.service) =>
msg: Start server2-abcd_02.service
ok: [CBxxxx2] => (item=server2-abcd_03.service) =>
msg: Start server2-abcd_03.service
If this is what you want, use systemd instead of debug
- name: Start all services
systemd:
name: "{{ item }}"
state: started
loop: "{{ servers_as[inventory_hostname]|d([]) }}"
Upvotes: 3