quand La clause ne peut pas évaluer la présence de balises. Comme solution de rechange, 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
\# inventory
\[dev\]
192.168.1.1
# site.yml
- hosts: dev
roles:
- { role: common }
and in common/tasks/main.yml
# roles/common/tasks/main.yaml
- name: Install links
apt: name=links state=present
- include: uninstall.yml
when: uninstall\_links is defined
tags:
- uninstall
# roles/common/tasks/uninstall.yml
- name: Uninstall links
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' pour l'activer. Ainsi, si vous exécutez le playbook 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' dans votre playbook (ou ligne de commande) et MUST définir la variable. Si vous ne définissez pas la variable, il exécutera tout (installation et désinstallation) dans cet ordre, ce qui est bon pour tester l'ensemble du processus.
Comment faire fonctionner le tout (il s'installera et se désinstallera) :
$ ansible-playbook -i inventory site.yml -l dev -s -k -e "uninstall_links=true"
Comment exécuter uniquement le tag 'uninstall' sur le groupe de développement ?
$ ansible-playbook -i inventory site.yml -l dev -s -k -e "uninstall_links=true" -t uninstall
Par conséquent, les variables et les balises pourraient également se trouver dans les fichiers site.yml/inventory, vous permettant de commit dans votre SCM et d'enregistrer votre intention.
2 votes
Il semble que ce dont vous avez besoin soit un paramètre de tâche tel que limit_to_tags : foo qui n'existe pas et je ne pense pas que cela soit possible pour le moment. Une implémentation future doit également prévoir de déterminer s'il faut AND ou OR ces balises ensemble.
0 votes
Jetez un coup d'œil à ma réponse dans "Ansible - Default/Explicit Tags". stackoverflow.com/questions/28789912/