Ответ
Handlers (обработчики) в Ansible — это специальные задачи, которые выполняются только по уведомлению (notify) и обычно один раз в конце плейбука, даже если были вызваны несколько раз. Они используются для перезапуска служб или применения изменений конфигурации.
Ключевые особенности:
- Выполняются только при изменении (
changed: true) уведомившей их задачи. - По умолчанию запускаются один раз в конце выполнения всех задач плейбука.
- Порядок выполнения можно контролировать с помощью
listenи меток.
Пример использования:
---
- name: Configure Nginx
hosts: webservers
tasks:
- name: Copy Nginx configuration template
ansible.builtin.template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
notify:
- Reload Nginx service # Уведомление хендлера
- Check Nginx config # Можно уведомить несколько хендлеров
handlers:
- name: Reload Nginx service
ansible.builtin.service:
name: nginx
state: reloaded
listen: "nginx handlers" # Группировка через listen
- name: Check Nginx config
ansible.builtin.command: nginx -t
listen: "nginx handlers"
Практический совет: Хендлеры идеально подходят для перезапуска демонов (nginx, sshd, docker) после изменения их конфигурационных файлов, что является распространенной практикой при управлении инфраструктурой как код (IaC).