有没有办法检查ansible任务中未定义字典键?


18

所以在我的代码中,我有一个任务

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

我的var看起来像

---
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'.

Answers:


25

您包括的语法:

when: me.cool is not defined

是正确的。

您也可以使用not in

when: "'cool' not in me"

问题是您的错误消息:

条件检查“ me.cool”失败。

声称您的情况定义为:

when: me.cool

因此,或者您使用的版本中存在一些错误(但是您没有共享它的版本),并且存在已知问题,或者您没有发布导致错误的确切任务。


1
如果他不发布原始代码,而忽略了引用相同值的第二个条件,则该错误仍然可能发生。这有效: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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.