On 2/3/14, 4:32 PM, Roman Revyakin wrote:
cat > test_playbook.yaml <<EOF
---
- hosts: all
   gather_facts: false

   tasks:
     - name: Play only if var1 is true and var2 is defined
       local_action: command echo "Yes {{ var1 }} is true and {{ var2 }}
is defined"
       when: var1 and var2 is defined
EOF

$ ansible-playbook -i host -v test_playbook.yaml --extra-vars
"var1=false var2='something'"

PLAY [all]
********************************************************************

TASK: [Play only if var1 is true and var2 is defined]
*************************
changed: [localhost] => {"changed": true, "cmd": ["echo", "Yes false is
true and something is defined"], "delta": "0:00:00.003256", "end":
"2014-02-04 11:19:56.720699", "rc": 0, "start": "2014-02-04
11:19:56.717443", "stderr": "", "stdout": "Yes false is true and
something is defined"}

You most certainly have a string to bool comparison issue going on.

You can change this by using the bool filter.

when: var1|bool and var2 is defined

When I use this, var1 being "false" will still cause the task to be skipped as expected.


-jlk

--
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 ansible-project+unsubscr...@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to