¿Es posible tener "tareas de publicación" en un rol? es decir, tareas definidas en un rol, que se ejecutarían al final de la obra.
Por ejemplo, tengo un common
rol del que dependen la mayoría de los demás roles. El common
rol proporciona algunas cosas básicas para evitar repeticiones, como ajustes en la configuración de yum, etc.
me doy cuenta de quelos libros de jugadas tienenpost_tasks
. Me preguntaba si es posible definir tareas de publicación en los propios roles.
Actualizar: Citando elDocumentación ansible:
Controladores: ejecución de operaciones en caso de cambio
...
Estas acciones de "notificación" se activan al final de cada bloque de tareas en un libro de jugadas y solo se activarán una vez, incluso si se notifican mediante varias tareas diferentes.
...
Los roles se describen más adelante. Vale la pena señalar que los controladores se procesan automáticamente entre las secciones 'pre_tasks', 'roles', 'tasks' y 'post_tasks'.
...
Evidentemente, esta parte de la documentación es engañosa o mentira (= hay un error en ella). Parece que los manipuladores están despedidos.al final de cada jugada, entre tasks
y post_tasks
, como muestra la siguiente prueba simple:
- name: Handlers test
hosts: all
gather_facts: no
roles:
- some-role
# some-role depends on common
tasks:
- name: This a task
shell: /bin/true
post_tasks:
- name: This is a post task
shell: /bin/true
Y el rol común:
# tasks/main.yml
- name: Registering handler
shell: /bin/true
notify: this is a handler
#handlers/main.yml
- name: this is a handler
shell: /bin/true
(Como nadie proporcionó una respuesta, no puedo aceptarla, pero no me sentí bien respondiendo mi propia pregunta con consejos de los comentarios...)
Respuesta1
Este comportamiento se debe a un error en Ansible 1.9.x, actualmente se rastrea aquí:https://github.com/ansible/ansible/issues/12575