Donc, dans mon code, j'ai une tâche
- name: cool task
Shell: 'touch iamnotcool.txt'
when: me.cool is not defined
et mes vars ressemblent
---
me:
stumped: yes
Donc, lorsque j'exécute la tâche, elle revient avec l'erreur suivante
{"failed": true, "msg": "The conditional check 'me.cool' failed. The error was: error while evaluating conditional (me.cool): 'dict object' has no attribute 'cool'.
La syntaxe que vous avez incluse:
when: me.cool is not defined
est correct.
Vous pouvez aussi utiliser not in
:
when: "'cool' not in me"
Le problème est que votre message d'erreur:
La vérification conditionnelle "me.cool" a échoué.
affirme que votre état est défini comme:
when: me.cool
Donc, soit il y a un bug dans la version que vous utilisez (mais vous n'avez pas partagé celle-ci) et il y avait problèmes connus , ou vous n'avez pas posté la tâche exacte à l'origine de l'erreur.
Vous pouvez éviter que 'dict object' n'ait aucun attribut en utilisant la syntaxe jinja2 selectattr () comme dans:
when: me|selectattr("cool", "defined")|list|length >0
idée obtenue de Michael Hoglan à https://groups.google.com/forum/#!topic/ansible-project/8XJkHQgttLA