Как использовать обработчики в Ansible Playbook

Как использовать обработчики в Ansible Playbook

 

В Ansible обработчик похож на любую другую задачу, но запускается только при вызове или уведомлении . Он принимает меры, когда на управляемом хосте были внесены изменения. Обработчики используются для инициирования вторичных изменений, таких как запуск или перезапуск службы после установки или даже перезагрузка службы после внесения некоторых изменений в файлы конфигурации. В этом руководстве мы подробнее рассмотрим обработчики Ansible. Мы узнаем, как использовать обработчики в ansible playbook.

Файл Ansible playbook с обработчиком

Чтобы лучше понять, как работают обработчики, мы возьмем пример файла playbook — install_apache.yml — который устанавливает веб-сервер Apache, а затем перезапускает службу Apache. В приведенном ниже примере обработчик получает уведомление о перезапуске службы Apache вскоре после установки. Это достигается с помощью модуля уведомления, как показано на рисунке. Обратите внимание, что имя ‘notify’ должно совпадать с именем обработчика, как указано, иначе вы столкнетесь с ошибками в вашем файле playbook.

---
- hosts: staging
  name: Install
  become: yes
  tasks:
          - name: Install Apache2 on  Ubuntu server
            apt:
                    name: apache2
                    state: present
                    update_cache: yes
            notify:
                    - Restart apache2

 handlers:
          - name: Restart apache2
            service:
                    name:  apache2
                    state: restarted

Как использовать обработчики в Ansible Playbook

Теперь запустим файл playbook.

$ ansible-playbook /etc/ansible/install_apache.yml -K

Из выходных данных вы можете увидеть, что обработчик выполняется сразу после задачи.

Как использовать обработчики в Ansible Playbook 1

Несколько задач с несколькими обработчиками

Кроме того, у нас может быть несколько задач, вызывающих несколько обработчиков. Рассмотрим файл playbook ниже.

Вот вам нужно выполнить 2 задачи:

  • Установка веб-сервера Apache
  • Разрешение HTTP-трафика на брандмауэре UFW.

После успешного выполнения задач я вызвал каждый из обработчиков с модулем « уведомить », как показано ниже. Первый обработчик перезапускает Apache, а второй перезагружает брандмауэр UFW.

---
- hosts: staging
  name: Install
  become: yes
  tasks:
         - name: Install Apache2 on  Ubuntu server
           apt:
                   name: apache2
                   state: present
                   update_cache: yes

         - name: Allow HTTP traffic on UFW firewall
           ufw:
                   rule: allow
                   port: http
                   proto: tcp

           notify:
                   - Restart apache2
                   - Reload ufw firewall
  handlers:
          - name: Restart apache2
            service:
                    name:  apache2
                    state: restarted

          - name: Reload ufw firewall
            ufw:
                    state: enabled

Как использовать обработчики в Ansible Playbook 3

Когда файл playbook выполняется, оба обработчика запускаются Ansible сразу после установки Apache, и HTTP-трафик разрешается на брандмауэре.

Вторичные действия, выполняемые обработчиками, здесь:

  • Перезапуск Apache
  • Включение и перезагрузка брандмауэра, чтобы изменения вступили в силу.

Как использовать обработчики в Ansible Playbook 4

Заключение

Как вы видели, обработчики похожи на обычные задачи, только на них ссылаются с помощью глобально уникального модуля, называемого ‘ notify ‘. Если обработчик не уведомлен, он не запускается. Помните, что все обработчики запускаются после выполнения всех задач.