Ho bisogno della cosa semplice - se la variabile è false
o stringa vuota, quindi valutare false
. Altrimenti valuta vero.
Provai bool(var)
ma sto ottenendo:
UndefinedError: "bool" is undefined
Poi ho provato var | bool
ma anche se var non è vuoto, ciò valuta false
. Come far funzionare quella condizione ??
risposte:
1 per risposta № 1Ho trovato una possibile soluzione in stile rubino:
when: not not var
Ma è piuttosto brutto. Ho dimenticato di dirlo senza not not
il var restituisce una stringa in modo che gli errori rispondano. Spero in una risposta migliore, quindi per favore aggiungi un'altra risposta se hai.
0 per risposta № 2
Il tuo problema principale è che qualsiasi cosa diversa da "true" verrà valutata come falsa durante l'utilizzo var | bool
.
Se lo fornite sempre come stringa (ad es. var: ""
o var: "false"
) quindi puoi semplicemente verificare l'uguaglianza delle stringhe:
when: condition == "false" or condition == ""
Facoltativamente aggiungendo anche il controllo booleano se hai questa possibilità:
when: not condition or condition == "false" or condition == ""
In alternativa, è possibile impostare un valore booleano predefinito e, facoltativamente, eseguire l'override. Ad esempio, potresti avere un ruolo con un compito condizionale:
ruoli / foo / attività / main.yml
- name: echo foobar
shell: echo "foobar"
when: echo_foo
ruoli / foo / default / main.yml
echo_foo: false
Ma potremmo sovrascriverlo a livello di gruppo o host:
group_vars / foobar-nodes.yml
echo_foo: true