Обработчики Ansible и модуль оболочки

У меня есть playbook со следующим разделом задач и обработчиков (просто фрагмент):

  tasks:
    - name: 'Run legacy script and power off'
      debug: msg="Preparing for reboot"
      notify: Legacy sysprep

  handlers:
    - name: Enable Service1
      service: name=service1 enabled=yes state=restarted

    - name: Legacy sysprep
      shell: /var/scripts/prep-reboot.sh

Когда я запускаю playbook, я вижу сообщение отладки для задачи, которая вызывает обработчик Legacy sysprep, и я вижу, что обработчик Enable Service1 выполняется, но обработчик Legacy sysprep не вызывается (он не отображается в выходных данных playbook и не отображается). он работает в системе), а серверы не перезагружаются (часть сценария).

Да, я планирую перенести сценарий Prep-reboot.sh на Ansible playbook, но меня удивило, что модуль shell не работает? Или есть ошибка, которую я пропустил? Работа с -vvv не сообщает ни о чем неожиданном.

Ansible и Ansible-playbook версии 2.1.1.0, работающий на RHEL 6.8.


person dan_linder    schedule 05.10.2016    source источник
comment
Ни один из обработчиков не может работать в приведенном вами примере, потому что debug вернет ok status. При этом вопрос непонятный. Приведите проверяемый пример.   -  person techraf    schedule 06.10.2016
comment
@techraf - Спасибо за подсказку, я добавил в play свойство changed_when: true, и теперь обработчик срабатывает. См. Ответ, который я опубликовал ниже.   -  person dan_linder    schedule 06.10.2016


Ответы (1)


Спасибо, @techraf, ты указал мне правильное направление. Я закончил тем, что добавил changed_when: true в строку отладки, и это заставило эту игру зарегистрировать изменение, которое затем запускает соответствующий обработчик.

Вот моя настоящая тестовая книга для справки:

---
- name: Testing forced handler
  hosts: testsys_only
  gather_facts: True

  tasks:
    - name: 'Run legacy script and power off'
      debug: msg="Preparing for reboot"
      changed_when: true
      notify: Legacy sysprep

  handlers:
    - name: Enable Service1
      service: name=service1 enabled=yes state=restarted

    - name: Legacy sysprep
      shell: /var/scripts/prep-reboot.sh
person dan_linder    schedule 06.10.2016
comment
внутри обработчиков ›оболочки также может быть какая-то команда, например перезагрузка конфигурации программы: rkhunter --propupd. Однако, наверное, это очевидно. - person frank_108; 01.10.2020