Как сбросить выполнение обработчика 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
Пожертвовать
