Quand la clause ne peut pas évaluer la présence de balises. En guise de solution de contournement, j'utilise des variables et des balises ensemble pour exécuter des tâches spécifiques à cette balise / variable.
Ex: Imaginez un livre de jeu et un inventaire
# inventaire
[dev]
192.168.1.1
# site.yml
- hôtes: dev
les rôles:
- {rôle: commun}
et dans common / tasks / main.yml
# rôles / common / tasks / main.yaml
- nom: installer des liens
apt: name = links state = present
- inclure: uninstall.yml
when: uninstall_links est défini
Mots clés:
- désinstaller
# rôles / common / tasks / uninstall.yml
- nom: liens de désinstallation
apt: name = links state = absent
Avec cette approche, vous utilisez la balise pour sélectionner uniquement les tâches dans uninstall.yml, mais vous devez également définir la variable 'uninstall_links' sur quelque chose pour l'activer. Ainsi, si vous exécutez le livre de lecture sans aucun paramètre, il exécutera par défaut la tâche d'installation. Pour désinstaller, vous pouvez définir la balise 'uninstall' sur votre playbook (ou cmdline) et DOIT définir la variable. Si vous ne définissez pas la balise, elle exécutera tout (installation et désinstallation) dans cet ordre, ce qui est utile pour tester l'ensemble du processus.
Comment tout exécuter (il va installer et désinstaller):
$ ansible-playbook -i inventory site.yml -l dev -s -k -e "uninstall_links=true"
Comment exécuter uniquement la balise 'uninstall' sur le groupe dev
$ ansible-playbook -i inventory site.yml -l dev -s -k -e "uninstall_links=true" -t uninstall
Par conséquent, les variables et les balises peuvent également figurer dans les fichiers site.yml / inventory, ce qui vous permet de valider dans votre SCM et d’enregistrer votre intention.