Dato questo inventario:ansible: sorta di comprensione della lista?
[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'
Come posso ottenere una lista degli IP privati dei server web?
webservers_private_ips: "{{ }}" # ['X.X.X.X', 'Y.Y.Y.Y', 'Z.Z.Z.Z']
So groups['webservers']
mi darà questa lista ['10.0.0.51', '10.0.0.52', '10.0.0.53']
e posso ottenere la private_ip di quello con:
{{ hostvars[item]['private_ip'] }}
with_items: groups['webservers']
Ma vorrei dichiarare una variabile nel mio file var direttamente e non hanno un compito di registrarlo. Sarebbe bello se qualcosa del genere potesse essere fatto:
webservers_private_ips: "{{ hostvars[item]['private_ip'] }} for item in groups['webservers']"
Grazie. Sì, come ho detto, so come farlo in un compito e in un modello. Quello che sto cercando è di creare una variabile con l'elenco di IP privati che posso passare in diversi ruoli, ad esempio. – Michael
Puoi dirci di più sul tuo caso d'uso? Soprattutto, li userai in un modello? – leucos
No, non deve essere utilizzato in un modello. Uno dei ruoli che uso si aspetta una lista di indirizzi IP come variabile. Potrei creare questa lista manualmente nel mio file di vars, ma mi piacerebbe creare questa variabile dinamicamente dalle variabili private_ip che ho definito su ciascun host. – Michael