Использование 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' }}"