Wie Genau Funktioniert Ansible Parse Boolean Variablen?
In Ansible, gibt es mehrere Orte, wo Variablen definiert werden können: im Inventar, in einem Textbuch in der variable Dateien, etc. Kann jemand erklären Sie die folgenden Beobachtungen, die ich gemacht habe?
- Bei der Definition einer booleschen variable in ein Inventar, es MUSS groß geschrieben werden (d.h., True/False), andernfalls (d.h., true/false) wird nicht interpretiert werden als Boolean sondern als String.
- In jedem YAML-formatierten Dateien (playbooks, Rollen, etc.) sowohl True/False und true/false interpretiert werden als Boolesche Werte.
Ich zum Beispiel definiert zwei Variablen in einer Bestandsaufnahme:
abc=false
xyz=False
Und beim Debuggen der Typ dieser Variablen innerhalb einer Rolle...
- debug:
msg: "abc={{ abc | type_debug }} xyz={{ xyz | type_debug }}"
... dann abc
wird unicode
aber xyz
wird interpretiert als ein bool
:
ok: [localhost] => {
"msg": "abc=unicode xyz=bool"
}
Jedoch, bei der Definition der gleichen Variablen in ein Textbuch, wie diese:
vars:
abc: false
xyz: False
... dann sind beide Variablen als anerkannte bool
.
Musste ich feststellen das der harte Weg nach Ausführung ein Textbuch über die Produktion, die laufen etwas, das sollte nicht ausgeführt werden, weil eine variable auf 'false' statt 'False' in ein Inventar. Also, ich würde wirklich gerne eine klare Antwort darüber, wie Ansible versteht, Booleans und wie es hängt davon ab, wo/wie die variable definiert ist. Soll ich die einfach immer verwenden aktiviert True/False, um auf der sicheren Seite? Ist es zulässig zu sagen, dass booleans in YAML-Dateien (mit format key: value
) groß-und Kleinschreibung unterschieden, während in properties-Dateien (mit format key=value
) Sie sind case-sensitive? Eine tiefere Einblicke würde sehr geschätzt werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Variablen definiert, die in YAML-Dateien (playbooks, vars_files, YAML-format Vorräte)
YAML Prinzipien
Playbooks, vars_files, und inventory-Dateien in YAML geschrieben verarbeitet werden, durch einen YAML-parser ersten. Es können auch mehrere Aliase für die Werte, die gespeichert werden, als
Boolean
geben:yes
/no
,true
/false
,on
/off
, definiert in mehreren Fällen:true
/True
/TRUE
(also Sie sind nicht wirklich groß-und Kleinschreibung).YAML-definition gibt mögliche Werte:
Ansible docs bestätigen, dass:
Definierten Variablen in der INI-format inventory-Dateien
Python Prinzipien
Wenn Ansible liest eine INI-format Inventar, it-Prozesse die Variablen mit Python built-in-Typen:
Wenn der angegebene Wert entspricht string
True
oderFalse
(beginnend mit einem Großbuchstaben) der Typ Boolean ist, sonst ist es als string behandelt (es sei denn, es entspricht einem anderen Typ).Variablen definiert durch
--extra_vars
CLI-parameterAlle Saiten
Alle Variablen übergeben als extra-vars in der CLI sind von Typ string.
bool
filter)