Есть ли способ проверить, что ключ словаря не определен в задании?

18

Так что в моем коде у меня есть задача

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

и мои вары выглядят как

---
me:
  stumped: yes

Поэтому, когда я запускаю задачу, она возвращается со следующей ошибкой

{"failed": true, "msg": "The conditional check 'me.cool' failed. The error was: error while evaluating conditional (me.cool): 'dict object' has no attribute 'cool'.
Луис Ф Эрнандес
источник

Ответы:

25

Синтаксис, который вы включили:

when: me.cool is not defined

правильно.

Вы также можете использовать not in:

when: "'cool' not in me"

Проблема в том, что ваше сообщение об ошибке:

Не удалось выполнить условную проверку me.cool.

утверждает, что ваше состояние определяется как:

when: me.cool

Итак, либо есть какая-то ошибка в используемой вами версии (но вы не указали, какая она есть) и были известные проблемы , либо вы не опубликовали точную задачу, которая вызвала ошибку.

techraf
источник
1
Ошибка все еще может произойти, если он не опубликовал исходный код пропущенного второго условия when, которое ссылается на то же значение. Это работает: when: is_installed.rc is defined and is_installed.rc == 0Это не:when: is_installed.rc is defined \n when is_installed.rc == 0
Aiyion.Prime