tutorial - arquitectura ansible
¿Cómo puedo ejecutar solo las tareas de ansible con varias etiquetas? (4)
Creo que la sintaxis correcta es:
- name: debug baz
debug: msg=baz
tags: foo, bar
Imagina este libro de jugabilidad 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
¿Cómo puedo ejecutar solo la tarea de debug baz
? Quiero decir que solo ejecute tareas etiquetadas con foo
AND bar
. ¿Es eso posible?
Intenté esto, pero ejecutará las 3 tareas:
ansible-playbook foo.yml -t foo,bar
Intente when
directiva:
- 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''
Las etiquetas ansibles usan "o" no "y" como una comparación. Su solución para crear otra etiqueta es la adecuada.
Si lo usas de esta manera:
- name: debug baz
debug: msg=baz
tags:
- foo
- bar
Hiciste una operación OR. Entonces, si usas el comando:
ansible-playbook -i inventory test.yml --tags foo
o
ansible-playbook -i inventory test.yml --tags bar
Ejecutará esta tarea.
Si utiliza:
- name: debug baz
debug: msg=baz
tags:
- foo, bar
Hiciste una operación AND. Así que solo el comando:
ansible-playbook -i inventory test.yml --tags foo, bar
Ejecutará esta tarea.