Biorąc pod uwagę ten inwentarz:ansible: rodzaj zrozumienia list?
[webservers]
10.0.0.51 private_ip='X.X.X.X'
10.0.0.52 private_ip='Y.Y.Y.Y'
10.0.0.53 private_ip='Z.Z.Z.Z'
Jak mogę uzyskać listę prywatnych ips tych serwerach?
webservers_private_ips: "{{ }}" # ['X.X.X.X', 'Y.Y.Y.Y', 'Z.Z.Z.Z']
wiem groups['webservers']
da mi tę listę ['10.0.0.51', '10.0.0.52', '10.0.0.53']
i mogę dostać private_ip jednego z:
{{ hostvars[item]['private_ip'] }}
with_items: groups['webservers']
Ale chciałbym zadeklarować zmienną w moim pliku var bezpośrednio i nie mieć Zadanie to zarejestrować. Byłoby miło, gdyby można było zrobić coś takiego:
webservers_private_ips: "{{ hostvars[item]['private_ip'] }} for item in groups['webservers']"
Dzięki. Tak, jak już powiedziałem, wiem, jak to zrobić w zadaniu iw szablonie. To, czego szukam, to utworzyć zmienną z listą prywatnych adresów IP, które mogę przekazać na przykład w różnych rolach. – Michael
Czy możesz nam powiedzieć coś więcej na temat twojego przypadku użycia? W szczególności, użyjesz ich w szablonie? – leucos
Nie, nie należy go używać w szablonie. Jedna z używanych przez mnie roli oczekuje listy adresów IP jako zmiennej. Mogłem utworzyć tę listę ręcznie w moim pliku vars, ale chciałbym utworzyć tę zmienną dynamicznie ze zmiennych private_ip, które zdefiniowałem na każdym hoście. – Michael