Is there a way to check that a dictionary key is not defined in ansible task?

Solution 1:

The syntax you included:

when: me.cool is not defined

is correct.

You can also use not in:

when: "'cool' not in me"

The problem is that your error message:

The conditional check 'me.cool' failed.

claims your condition is defined as:

when: me.cool

So, either there is some bug in the version you use (but you did not share which one it is) and there were known issues, or you did not post the exact task that caused the error.

Solution 2:

You can avoid 'dict object' has no attribute by using jinja2 selectattr() syntax as in :

when: me|selectattr("cool", "defined")|list|length >0

idea obtained from Michael Hoglan at https://groups.google.com/forum/#!topic/ansible-project/8XJkHQgttLA