Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
674 views
in Technique[技术] by (71.8m points)

boolean - 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.

question from:https://stackoverflow.com/questions/39640654/using-true-false-with-ansible-when-clause

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

To run a task when destroy is true:

---
- hosts: localhost
  connection: local
  vars:
    destroy: true
  tasks:
    - debug:
      when: destroy

and when destroy is false:

---
- hosts: localhost
  connection: local
  vars:
    destroy: false
  tasks:
    - debug:
      when: not destroy

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...