Oui. Exécuter ansible-playbook avec l'option --tags foo
permettra de s'assurer que seules les tâches étiquetées avec l'option foo
sont exécutées. Par exemple, supposons que nous ayons un playbook appelé example.yml :
tasks:
- yum: name={{ item }} state=installed
with_items:
- httpd
- memcached
tags:
- packages
- name: some other task
..
tags:
- some other tag
en cours d'exécution :
ansible-playbook example.yml --tags "packages"
S'assurera que seule la tâche yum est exécutée.
Donc, en fait, vous n'avez pas vraiment besoin d'utiliser des balises dans la section when pour exécuter une tâche de manière conditionnelle. Notez que selon la complexité de vos playbooks/rôles, vous devrez peut-être utiliser une combinaison de --tags et --skip-tags pour contrôler les tâches exécutées. Par exemple, si une tâche incluse est étiquetée comme 'foo' et qu'une tâche dans le playbook inclus est étiquetée comme 'bar' et que vous exécutez
ansible-playbook --tags "foo"
La tâche interne (étiquetée seulement comme 'bar') sera exécutée. Pour éviter l'exécution de toutes les tâches internes étiquetées 'bar', vous devrez exécuter la commande suivante
ansible-playbook --tags foo --skip-tags bar
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/