Comment puis-je exécuter uniquement des tâches ansible avec plusieurs balises?
Imaginez ce playbook ansible:
- name: debug foo
debug: msg=foo
tags:
- foo
- name: debug bar
debug: msg=bar
tags:
- bar
- name: debug baz
debug: msg=baz
tags:
- foo
- bar
Comment puis-je exécuter uniquement la tâche debug baz
? Je veux dire seulement exécuter des tâches qui sont étiquetées avec foo
et bar
. Est-ce possible?
J'ai essayé ceci, mais il exécutera toutes les tâches 3:
ansible-playbook foo.yml -t foo,bar
27
demandé sur
chmac
2015-05-04 20:23:57
4 réponses
Les balises Ansible utilisent " ou " not " et " comme comparaison. Votre solution pour créer encore une autre balise est la solution appropriée.
22
répondu
Bruce P
2015-05-05 16:52:08
Je crois que la syntaxe correcte est:
- name: debug baz
debug: msg=baz
tags: foo, bar
0
répondu
foofunner
2016-04-18 08:54:20
Essayez when
directive:
- name: debug foo
debug: msg=foo
tags:
- foo
- name: debug bar
debug: msg=bar
tags:
- bar
- name: debug baz
debug: msg=baz
when:
- '"foo" in ansible_run_tags'
- '"bar" in ansible_run_tags'
0
répondu
H0WARD
2018-08-12 05:46:28
Si vous utilisez cette façon:
- name: debug baz
debug: msg=baz
tags:
- foo
- bar
Vous avez fait une opération OU. Donc, si vous utilisez la commande:
ansible-playbook -i inventory test.yml --tags foo
Ou
ansible-playbook -i inventory test.yml --tags bar
Exécutera cette tâche.
Si vous utilisez:
- name: debug baz
debug: msg=baz
tags:
- foo, bar
Vous avez fait une opération et. Donc, seule la commande:
ansible-playbook -i inventory test.yml --tags foo, bar
Exécutera cette tâche.
0
répondu
Carlos Alberto P. Moura Jr.
2018-09-14 12:32:22