web-dev-qa-db-fra.com

Utilisation de True False avec Ansible When Clause

Je rencontre le problème le plus stupide. Je n'arrive pas à comprendre comment tester booléen dans un fichier de tâches Ansible 2.2.

Dans vars/main.yml, J'ai:

destroy: false

Dans le livre de jeu, j'ai:

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

Dans le fichier de tâches, j'ai les éléments suivants:

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

J'ai essayé différentes combinaisons ci-dessous:

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

Dans tous les cas ci-dessus, j'ai toujours:

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

Sortie de débogage:

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

---

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

Le résultat souhaité, c'est qu'il saute l'include.

22
Simply Seth

Pour exécuter une tâche lorsque destroy est true:

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

et quand destroy est false:

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

Il n'est pas nécessaire d'utiliser le boolfiltre Jinja lorsque la valeur de la variable est définie sous hostvars.

Pour convertir les valeurs en certains types, par exemple lorsque vous saisissez une chaîne comme "True" à partir d'un vars_Prompt et que le système ne sait pas qu'il s'agit d'une valeur booléenne.

Donc un simple

when: not destroy

devrait faire l'affaire.

13
Henrik Pingel