/ / jinja / ansible String in Boolean konvertieren - python-3.x, ansible, jinja2

jinja / ansible wandelt die Zeichenfolge in boolean um - python-3.x, ansible, jinja2

Ich brauche die einfache Sache - wenn variabel ist false oder leere Zeichenfolge, dann auswerten zu false. Ansonsten zu true auswerten.

Ich habe es versucht bool(var) aber ich bekomme:

UndefinedError: "bool" is undefined

Dann habe ich es versucht var | bool Aber auch wenn var nicht leer ist, ergibt das false. Wie kann man diese Bedingung erfüllen?

Antworten:

1 für die Antwort № 1

Ich habe eine mögliche Lösung im Rubinstil gefunden:

    when: not not var

Aber es ist ziemlich hässlich. Ich habe vergessen, das ohne zu sagen not not die var wertet einen string also als anzeigefehler aus. Ich hoffe auf eine bessere Antwort, füge also bitte eine andere Antwort hinzu, wenn du hast.


0 für die Antwort № 2

Ihr Hauptproblem ist, dass alles andere als "wahr" bei der Verwendung als falsch bewertet wird var | bool.

Wenn Sie es immer als Zeichenfolge bereitstellen (z. var: "" oder var: "false") dann können Sie einfach auf String-Gleichheit prüfen:

when: condition == "false" or condition == ""

Optional können Sie auch die Boolesche Prüfung hinzufügen, wenn Sie diese Möglichkeit haben:

when: not condition or condition == "false" or condition == ""

Alternativ können Sie standardmäßig einen Booleschen Wert verwenden und optional überschreiben. Zum Beispiel könnten Sie eine Rolle haben, die eine bedingte Aufgabe hat:

Rollen / Foo / Aufgaben / main.yml

- name: echo foobar
shell: echo "foobar"
when: echo_foo

rolls / foo / defaults / main.yml

echo_foo: false

Aber dann könnten wir dies auf einer Gruppen- oder Host-Vars-Ebene überschreiben:

group_vars / foobar-nodes.yml

echo_foo: true