Search code examples
booleanansibleansible-2.x

Using True False with Ansible When Clause


I'm running into the silliest issue. I cannot figure out how to test for boolean in an Ansible 2.2 task file.

In vars/main.yml, I have:

destroy: false

In the playbook, I have:

roles: 
  - {'role': 'vmdeploy','destroy': true}

In the task file, I have the following:

- include: "create.yml"
  when: "{{ destroy|bool }} == 'false'"

I've tried various combinations below:

when: "{{ destroy|bool }} == false"
when: "{{ destroy|bool }} == 'false'"
when: "{{ destroy|bool  == false}}"
when: "{{ destroy  == false}}"
when: "{{ destroy  == 'false'}}"
when: destroy|bool  == false
when: destroy|bool  == 'false'
when: not destroy|bool

In all the above cases, I still get:

statically included: .../vmdeploy/tasks/create.yml

Debug output:

- debug:
    msg: "{{ destroy }}"

---

ok: [atlcicd009] => {
"msg": true
}

The desired result, is that it would skip the include.


Solution

  • The include kept happening before the when.

    So I just made the include dynamic.

    ---- defaults/main.yml
    mode: "create"
    
    ---- tasks/main.yml
    - include: "{{ mode + '.yml' }}"