Как сбросить выполнение обработчика Ansible после задачи уведомления с помощью модуля ansible.builtin.meta.
Когда запускаются обработчики Ansible?
По умолчанию обработчики запускаются после завершения всех задач в конкретной игре.
Ссылки
Демо
Давайте перейдем к реальному примеру того, как немедленно запустить обработчик Ansible.
В первую очередь нам нужен статус изменения задачи. Самый простой модуль Ansible, возвращающий статус «изменено», — это модуль Ansible `command
` с командой Linux, например «uptime
».
Предположим, мы хотим выполнить обработчик сразу после изменения статуса, а не ждать следующей задачи с помощью модуля ansible.builtin.meta
.
Первоначальный сценарий
- flush_before.yml
--- - name: handler demo hosts: all tasks: - name: changed status ansible.builtin.command: "uptime" notify: message 1 - name: message 2 ansible.builtin.debug: msg: message 2 handlers: - name: message 1 ansible.builtin.debug: msg: message 1
- инвентарь
localhost ansible_connection=local
Начальное выполнение
Как вы можете заметить, обработчик `message 1
` выполняется ПОСЛЕ выполнения последней задачи (`message 2
`) воспроизведения.
$ ansible-playbook -i inventory flush_before.yml PLAY [handler demo] ********************************************************************* TASK [Gathering Facts] ****************************************************************** ok: [localhost] TASK [changed status] ******************************************************************* changed: [localhost] TASK [message 2] ************************************************************************ ok: [localhost] => { "msg": "message 2" } RUNNING HANDLER [message 1] ************************************************************* ok: [localhost] => { "msg": "message 1" } PLAY RECAP ****************************************************************************** localhost : ok=4 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Модифицированный сборник сценариев
Давайте добавим модуль `ansible.builtin.meta
` Ansible после первой задачи.
--- - name: handler demo hosts: all tasks: - name: changed status ansible.builtin.command: "uptime" notify: message 1 - name: flush ansible.builtin.meta: flush_handlers - name: message 2 ansible.builtin.debug: msg: message 2 handlers: - name: message 1 ansible.builtin.debug: msg: message 1
Модифицированное выполнение
Как вы можете заметить, обработчик `message 1
` выполняется ДО последней задачи (`message 2
`) выполняемого Play.
% ansible-playbook -i inventory flush.yml PLAY [handler demo] ********************************************************************* TASK [Gathering Facts] ****************************************************************** ok: [localhost] TASK [changed status] ******************************************************************* changed: [localhost] TASK [flush] **************************************************************************** RUNNING HANDLER [message 1] ************************************************************* ok: [localhost] => { "msg": "message 1" } TASK [message 2] ************************************************************************ ok: [localhost] => { "msg": "message 2" } PLAY RECAP ****************************************************************************** localhost : ok=4 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Резюме
Теперь вы знаете, как немедленно запустить обработчик Ansible в Playbook.
Надеюсь, вам понравилось это читать. Если вы хотите поддержать меня как писателя, рассмотрите возможность подписки стать участником Medium. Всего 5 долларов в месяц, и вы получаете неограниченный доступ к Medium.
Подпишитесь на канал YouTube, Medium, Substack и веб-сайт, чтобы не пропустить следующий выпуск Ansible Pilot.
Лучшие ресурсы для Ansible
Видеокурс
Печатная книга
электронные книги
- Ansible на примерах: 200+ примеров автоматизации для системного администратора Linux и Windows и DevOps
- Ansible для Windows на примерах: 50+ примеров автоматизации для системного администратора Windows и DevOps
- Ansible для Linux на примерах: более 100 примеров автоматизации для системного администратора Linux и DevOps
- Файловая система Ansible Linux на примерах: более 40 примеров автоматизации операций с файлами и каталогами Linux для современной ИТ-инфраструктуры
- Ansible для контейнеров и Kubernetes на примерах: более 20 примеров автоматизации контейнеров, Kubernetes и OpenShift
- Ansible For Security на примерах: более 100 примеров автоматизации безопасности и проверки соответствия для современной ИТ-инфраструктуры
- Советы и подсказки Ansible: более 10 примеров Ansible для экономии времени и автоматизации большего количества задач
- Пользователи и группы Ansible Linux на примерах: 20+ примеров автоматизации работы пользователей и групп Linux для современной ИТ-инфраструктуры
- Ansible для PostgreSQL на примерах: более 10 примеров автоматизации вашей базы данных PostgreSQL
- Ansible для Amazon Web Services AWS на примерах: более 10 примеров автоматизации современной инфраструктуры AWS