J'ai un comportement étrange. Je suis toujours un novice Ansible, alors je m'excuse d'avance.Exécution de rôles basés sur des variables
Je suis en train d'exécuter conditionnellement un rôle, basé sur un exemple que j'ai vu ici: https://github.com/atomicobject/ansible-laptop-playbook-example/blob/1785f25014fa5a7776de5b332d093b60bf59c8e0/laptop.yml
Quoi qu'il en soit, j'ai un host_vars/localhost
:
has_thing: true
Dans mon haut niveau site.yml
, je :
-name: Title
hosts: all
roles:
- { role: myrole, when: has_thing is defined and has_thing == "true" }
Ceci ignore le rôle.
Si je fais ceci:
-name: Title
hosts: all
roles:
- { role: myrole, when: has_thing is defined }
le rôle est exécuté.
Si je fais ceci:
-name: Title
hosts: all
roles:
- { role: myrole, when: has_thing == "true" }
Il ne fonctionne pas.
Si je fais:
-name: Title
hosts: all
roles:
- { role: myrole, when: has_thing != "true" }
Il ne fonctionne toujours pas. Je ne comprends pas pourquoi, les variables has_thing
sont clairement définies car cela fonctionne tant que je ne teste pas sa valeur.
Qu'est-ce qui me manque ici?
Merci beaucoup Konstantin. J'ai essayé de faire '- {role: myrole, quand: has_thing est défini et has_thing: 'true'}' mais a une erreur de syntaxe sur 'has_thing: 'true'}'. Une idée pourquoi? – prelic
Utilisez 'debug: var = has_thing', chaîne de sortie moyenne, non citée - autres types. Quelque chose comme 'when: has_thing | default (false) | bool' devrait faire ce que vous voulez. –
Désolé pour le edit ninja. Je comprends ce que vous dites maintenant. Merci beaucoup pour votre aide. – prelic