Sagen wir, ich habe 3 Dateien in group_vars:ansible Gruppe Vars Priorität
abc.yml
all.yml
xyz.yml
Und die gleiche Variable in ihnen definiert:
- my_var: abc
- my_var: all
- my_var: xyz
ansible documentation sagt:
Innerhalb jeder Abschnitt, die Neudefinition einer Var überschreibt die vorherige Instanz. Wenn mehrere Gruppen die gleiche Variable haben, gewinnt der zuletzt geladene. Wenn Sie eine Variable zweimal im vars: -Abschnitt eines Spiels definieren, gewinnt das zweite.
Bedeutet es, dass die Last um alphabetische ist und abc.yml
hat die niedrigste Priorität, während xyz.yml
die höchsten oder es hängt von der Reihenfolge der Gruppen in hosts
?
Was ist die bestellung? auch führt, aber in unvorhersehbarer Weise
Es ist interessant, dass die Reihenfolge der Gruppen in hosts
Änderungen zu ändern.
Ich versuchte ansible-playbook my_var.yml -c local
laufen (das einzige Variable Wert zurückgibt) mit allen Kombinationen von:
[all]
localhost
[xyz]
localhost
[abc]
localhost
aber ich kann immer noch nicht herausfinden, wie es funktioniert.
Sie geraten hier in extrem unvorhersehbares Verhalten. Am besten wäre es, Variablen nicht auf diese Weise wiederzuverwenden. Sie sollten versuchen, Konflikte um jeden Preis zu vermeiden, da sie Ihre Spielbücher sehr instabil machen. Wenn Sie Konflikte verwenden müssen, um Variablen zu überschreiben, müssen Sie sehr explizit angeben, in welcher Reihenfolge sie geladen werden. Ich würde das wahrscheinlich tun, indem ich Include-Anweisungen statt Gruppen-Vars verwende. – smiller171