I faced the same problem. 

I tried Nick Groenen's code and it doesn't work when the params is like 
this:
```
foo:
```
in this case, foo is define and foo == none

And it doesn't work when foo: '   '

This is what I came up with:

not((foo is undefined) or (foo is none) or (foo|trim == ''))

Not sure if there is any build-in function that implement similar logic.

Cheers

Leo Liang

在 2014年1月31日星期五 UTC+11下午10:58:17,Stephen Ryan写道:
>
>
>
> Best to explain with an example
>
> We have tasks setup like
>
> - name: do something
>   shell: do task
>   when: foo is defined
>
> This works perfectly for most situations however we have a number of 
> places where we need to unset the variable to stop the command on certain 
> hosts. Neither of the following work when set in the group vars and result 
> in the task working.
>
> foo:
> foo: ""
>
> So my question is how would one normally unset a variable like this or 
> correctly test for it. Jinja docs suggest its just an "if variable" [1], so 
> "when: foo" but that doesn't work whenever the variable has a value
>
> fatal: [127.0.0.1] => error while evaluating conditional: foo
>
> The closest I've gotten is 
> when: foo is defined and foo is string
> but this feels wrong and there is no reference to using an "is string" 
> check in the ansible docs.
>
> [1] http://jinja.pocoo.org/docs/templates/#if
>

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/ddf14bf5-1ba9-44cb-9367-63acc775314c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to