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 № 1Ich 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