Использование True False с предложением Ansible When

я сталкиваюсь с самой глупой проблемой. Я не могу понять, как проверить логическое значение в файле задачи Ansible 2.2.

на vars/main.yml, Я:

destroy: false

в playbook, у меня есть:

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

в файле задачи у меня есть следующее:

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

Я пробовал различные комбинации ниже:

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

во всех вышеперечисленных случаях, я все еще получаю:

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

отладки:

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

---

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

нужные в результате он пропустит include.

3 ответов


для запуска задачи, когда destroy и true:

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

и когда destroy и false:

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

нет необходимости использовать bool Jinja filter когда значение переменной определяется в разделе hostvars.

для приведения значений как определенных типов, например, когда вы вводите строку как "True" из vars_prompt, и система не знает, что это логическое значение.

Так простой

when: not destroy

должен трюк.


включение продолжалось до того, когда.

поэтому я просто сделал динамическое включение.

---- defaults/main.yml
mode: "create"

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