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?

  1. 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.
  2. 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.

InformationsquelleAutor dokaspar | 2017-12-18
Schreibe einen Kommentar