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

#ansible #ansible-playbook #ansible-2.x

#ansible #ansible-2.x

Вопрос:

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

   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, но я был удивлен, что, по-видимому shell , модуль, похоже, не работает? Или есть ошибка, которую я пропустил? Запуск с -vvv не сообщает ни о чем неожиданном.

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

Комментарии:

1. Ни один из обработчиков не может быть запущен в приведенном вами примере, потому debug что вернет ok статус. Тем не менее, вопрос непонятен. Пожалуйста, предоставьте проверяемый пример.

2. @techraf — Спасибо за подсказку, я добавил «changed_when: true» в воспроизведение, и теперь обработчик запускается. Смотрите Ответ, который я опубликовал ниже.

Ответ №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
  

Комментарии:

1. внутри обработчиков-> оболочки также может быть некоторая команда, например, перезагрузка конфигурации программы : rkhunter --propupd . Тем не менее, это, вероятно, очевидно.