Esiste un modo per verificare che una chiave del dizionario non sia definita nell'attività di risposta?


18

Quindi nel mio codice ho un compito

- name: cool task
  shell: 'touch iamnotcool.txt'
  when: me.cool is not defined

e il mio aspetto sembra

---
me:
  stumped: yes

Quindi, quando eseguo l'attività, viene visualizzato il seguente errore

{"failed": true, "msg": "The conditional check 'me.cool' failed. The error was: error while evaluating conditional (me.cool): 'dict object' has no attribute 'cool'.

Risposte:


25

La sintassi che hai incluso:

when: me.cool is not defined

è corretta.

Puoi anche usare not in:

when: "'cool' not in me"

Il problema è che il tuo messaggio di errore:

Il controllo condizionale "me.cool" non è riuscito.

afferma che la tua condizione è definita come:

when: me.cool

Quindi, o c'è qualche bug nella versione che usi (ma non hai condiviso quale sia) e c'erano problemi noti , o non hai pubblicato l'attività esatta che ha causato l'errore.


1
L'errore potrebbe ancora verificarsi, se non ha pubblicato il codice originale e ha inserito una seconda condizione quando riferita allo stesso valore. Funziona: when: is_installed.rc is defined and is_installed.rc == 0Questo non:when: is_installed.rc is defined \n when is_installed.rc == 0
Aiyion.Prime

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.