Ansible "wenn Variable == Wahr" verhält sich nicht wie erwartet

9

Ich habe die folgenden Aufgaben in einem Playbook, das ich schreibe (die Ergebnisse sind neben der Debug-Anweisung in & lt; & gt; aufgeführt):

%Vor%

Und ich führe es mit dem folgenden Befehl:

%Vor%

Der erste Include-Lauf, aber der zweite Sprung mit dieser Ausgabe:

%Vor%

Ich habe den Eindruck, dass die bedingte Prüfung für alle von ihnen durchgeführt werden sollte, da force_install == true zu true auswertet, was die gesamte when zu true machen sollte (da es sich um eine Reihe von ORs handelt) / p>

Wie erhalte ich das Wann, wenn die Variablen richtig eingestellt sind?

Bearbeiten:

Ändern der Sekunde, wenn für die Install NRPE die folgenden Funktionen verwendet werden, erklärt jedoch nicht, warum die andere, Run the prep , entsprechend ausgeführt wird:

Arbeiten:

%Vor%

funktioniert auch:

%Vor%

funktioniert nicht:

%Vor%

Die abgeschnittene (Duplikate entfernt) Ausgabe dieses bestimmten Abschnitts des Spiels ist:

%Vor%     
Mitch 17.06.2016, 19:09
quelle

1 Antwort

31

Sie müssen die Variable in einen booleschen Wert konvertieren:

%Vor%

Ich behaupte nicht, ich verstehe die Logik dahinter. In Python sollte jede nicht leere Zeichenfolge truthy sein. Wenn es jedoch direkt in einer Bedingung verwendet wird, wird es als falsch ausgewertet.

Der bool-Filter interpretiert dann wieder die Strings "true" und "yes" (case-insensitive) als wahr. Jede andere Zeichenfolge ist falsch.

Sie können auch einen Standardwert festlegen, falls force_install nicht definiert ist, da dies zu einem Fehler undefinierter Variable führen würde:

%Vor%     
udondan 18.06.2016, 09:22
quelle

Tags und Links