Diciamo Ho 3 file in group_vars:gruppo Ansible vars priorità
abc.yml
all.yml
xyz.yml
e la stessa variabile definita in loro:
- my_var: abc
- my_var: all
- my_var: xyz
Ansible documentation dice:
All'interno di ogni sezione, ridefinendo una var sovrascriverà l'istanza precedente. Se più gruppi hanno la stessa variabile, vince l'ultimo caricato. Se si definisce una variabile due volte nella vars di un gioco: sezione, vince il 2 °.
Vuol dire che l'ordine di caricamento è uno alfabetico e abc.yml
ha la priorità più bassa, mentre xyz.yml
il più alto, o dipende da ordine dei gruppi in hosts
?
Qual è l'ordine di caricamento?
È interessante, che modifica l'ordine dei gruppi in hosts
modifiche traduce pure, ma in modo imprevedibile.
ho provato a fare funzionare ansible-playbook my_var.yml -c local
(che restituisce solo un valore variabile) con tutte le combinazioni di:
[all]
localhost
[xyz]
localhost
[abc]
localhost
ma io ancora non riesco a capire come funziona.
si sta entrando in un comportamento estremamente imprevedibile qui. la cosa migliore da fare sarebbe non riutilizzare le variabili in questo modo. Dovresti mirare ad evitare i conflitti a tutti i costi, dal momento che renderanno i tuoi libri di gioco molto instabili. Se è necessario utilizzare i conflitti per sovrascrivere le variabili, è molto esplicito in quale ordine vengono caricati. Probabilmente lo farei usando le istruzioni include invece dei gruppi vars. – smiller171