Если после задачи по изменению конфига стоит статус ‘Ok’, отработает ли хендлер?

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

Ответ

Нет, не отработает. Хендлеры в Ansible запускаются только по уведомлению (notify) от задачи, которая изменила состояние системы (changed=true).

Статус ok означает, что задача выполнилась, но не внесла изменений (например, конфигурационный файл уже находился в нужном состоянии).

Пример из плейбука:

- name: Configure Nginx
  hosts: webservers
  tasks:
    - name: Deploy nginx config template
      ansible.builtin.template:
        src: nginx.conf.j2
        dest: /etc/nginx/nginx.conf
      notify:  # Уведомление отправляется ТОЛЬКО если задача изменила файл
        - Reload nginx service

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

Как проверить, сработала ли задача: Запустите плейбук с флагом -v. Вы увидите "changed": true или "changed": false для каждой задачи. Хендлер выполнится в конце рана, если хотя бы одна из уведомивших его задач была в состоянии changed.