Cuándo se ejecutan los handlers y flush_handlers
Controle el momento de ejecución de los handlers al finalizar el play
Cuándo se ejecutan los handlers y flush_handlers es una lección gratuita de Ansible Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Ansible Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Ansible Academy incluye 4 lecciones en total.
Los handlers se ejecutan al final
De forma predeterminada, todos los handlers notificados se ejecutan una vez, al final del play, después de que termine cada tarea. No en el momento en que recibieron la notificación.
Por qué se posponen
Posponerlos significa que un servicio se reinicia una sola vez incluso después de muchos cambios de configuración. Así se evitan reinicios innecesarios durante el play y se ahorra tiempo.
Por host, no de forma global
El momento de ejecución de los handlers se controla por host. Cada host ejecuta sus propios handlers en cola al final del play, de forma independiente de los demás.
El problema del reinicio tardío
A veces una tarea posterior necesita que el servicio ya se haya reiniciado. Esperar hasta el final del play es demasiado tarde, así que debe vaciar la cola antes.
Conozca flush_handlers
La tarea meta flush_handlers fuerza la ejecución inmediata de todos los handlers pendientes, en mitad del play.
- name: Run queued handlers now
ansible.builtin.meta: flush_handlersEs una tarea meta
flush_handlers es una acción especial de tipo meta que controla el propio Ansible en lugar de modificar el host remoto.
Un uso habitual
Cambie la configuración, vacíe la cola para que se reinicie el servicio y, después, ejecute una tarea de prueba de humo contra el servicio recién reiniciado.
- name: Update config
ansible.builtin.template:
src: app.j2
dest: /etc/app.conf
notify: Restart app
- ansible.builtin.meta: flush_handlers
- name: Check health
ansible.builtin.uri:
url: http://localhost/healthFallos y handlers
Si un host falla antes del final del play, normalmente sus handlers pendientes no se ejecutan. Esta es una de las razones por las que vaciar la cola antes puede ser más seguro.
force_handlers como red de seguridad
Establezca force_handlers en true en un play para ejecutar los handlers en cola incluso cuando un host falle posteriormente. Resulta útil para reinicios de limpieza.
- hosts: web
force_handlers: true
tasks:
- ...Vacíe la cola con moderación
Use flush_handlers solo cuando el orden lo requiera realmente. Utilizarlo en exceso elimina el beneficio de agrupar que ofrecen los handlers.
La secuencia temporal
Las tareas se ejecutan de arriba abajo, los handlers esperan en una cola y, después, todos se activan al final del play, salvo que vacíe la cola antes. ⏱️
Comprobación rápida
Debe reiniciar un servicio en mitad del play para que una tarea posterior pueda acceder a él. ¿Qué utiliza?
Resumen
Los handlers normalmente se ejecutan una vez al final del play, por host. Use flush_handlers para activarlos antes y force_handlers para que se ejecuten incluso después de fallos. 🚀
Preguntas frecuentes
¿La lección «Cuándo se ejecutan los handlers y flush_handlers» es gratis?
Sí — el texto completo de «Cuándo se ejecutan los handlers y flush_handlers» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Ansible Academy, actualiza a CoddyKit PRO. El curso de Ansible Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Cuándo se ejecutan los handlers y flush_handlers»?
Controle el momento de ejecución de los handlers al finalizar el play Practicas Ansible Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Ansible Academy?
No se requiere experiencia previa. Ansible Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Cuándo se ejecutan los handlers y flush_handlers»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Ansible Academy?
Sí. Cada lección de Ansible Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Notificar a un handler cuando haya cambios
- Definir handlers y patrones de reinicio
- Cuándo se ejecutan los handlers y flush_handlers
- Listen: un disparador, varios handlers