Что такое Ansible хэндлеры?

«Что такое Ansible хэндлеры?» — вопрос из категории Ansible, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Хэндлеры (handlers) в Ansible — это специальные задачи, которые выполняются только при изменении состояния системы, когда обычная задача возвращает статус changed: true. Их основное назначение — выполнение действий, которые должны следовать за изменением конфигурации, например, перезапуск или перезагрузка сервисов.

Ключевые особенности:

  • Выполняются один раз в конце выполнения плейбука, даже если были уведомлены (notified) несколько раз в разных задачах.
  • Порядок выполнения можно контролировать с помощью директив listen (хэндлер слушает общее событие) и меток (tags).
  • По умолчанию хэндлеры выполняются даже при возникновении ошибок в других задачах плейбука (это поведение можно изменить флагом --force-handlers).

Пример использования:

- name: Deploy Nginx configuration template
  ansible.builtin.template:
    src: /templates/nginx.conf.j2
    dest: /etc/nginx/nginx.conf
    owner: root
    group: root
    mode: '0644'
  notify:
    - Reload Nginx service  # Этот хэндлер будет вызван, только если задача изменила файл на целевой машине

handlers:
  - name: Reload Nginx service
    ansible.builtin.service:
      name: nginx
      state: reloaded

Почему это важно: Использование хэндлеров предотвращает ненужные перезапуски сервисов, когда конфигурация не менялась, что делает плейбуки идемпотентными и безопасными.