0Pricing
Ansible Academy · Урок

Listen: один триггер — несколько обработчиков

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

«Listen: один триггер — несколько обработчиков» — бесплатный урок Ansible Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ansible Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ansible Academy содержит 4 уроков всего.

Одно событие — много реакций

Иногда одно изменение должно одновременно запускать несколько обработчиков. Ключевое слово listen позволяет нескольким обработчикам подписаться на одну тему.

Уведомляйте тему, а не имя

При использовании listen значение notify задачи указывает на логическое имя события, а не на название конкретного обработчика.

- name: Update certs
  ansible.builtin.copy:
    src: site.pem
    dest: /etc/ssl/site.pem
  notify: restart web stack

Обработчики подписываются с помощью listen

Каждый обработчик добавляет строку listen с названием одной и той же темы. Каждый обработчик, подписанный на эту тему, запускается при получении уведомления.

handlers:
  - name: Restart nginx
    ansible.builtin.service:
      name: nginx
      state: restarted
    listen: restart web stack

Много обработчиков, одна тема

Задайте нескольким обработчикам одинаковое значение listen, и одно уведомление notify будет передано им всем. Это удобно для сгруппированных перезапусков.

  - name: Restart php-fpm
    ansible.builtin.service:
      name: php-fpm
      state: restarted
    listen: restart web stack

Разделяйте задачи и обработчики

Главное преимущество — развязка: задачи ссылаются на тему, а Вы можете добавлять или удалять обработчики, не изменяя задачи, которые отправляют уведомления.

Имя по-прежнему необязательно, но полезно

У обработчика с listen по-прежнему может быть имя, что делает вывод читаемым и позволяет другим задачам также уведомлять его напрямую.

Обработчик может слушать несколько тем

Передайте listen список, и один обработчик будет реагировать на несколько разных тем. Он реагирует на ту тему, для которой получено уведомление.

    listen:
      - restart web stack
      - reload tls

Идемпотентность сохраняется

Уведомления на основе тем подчиняются тем же правилам: обработчики запускаются только при состоянии changed, и каждый из них по-прежнему выполняется не более одного раза за плейбук.

Порядок по-прежнему определяется порядком объявления

Когда тема запускает несколько обработчиков, они выполняются в порядке, в котором определены в списке обработчиков, как и обычные обработчики.

Часто используется в общих ролях

Повторно используемые роли применяют listen, чтобы пользователи уведомляли стабильную тему, пока роль свободно изменяет свой внутренний набор обработчиков.

Notify и listen

notify — это сигнал от задачи, а listen — подписка обработчика. Вместе они превращают одно событие во множество действий. 🔔

Быстрая проверка

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

Итоги

С помощью listen задача отправляет уведомление по теме, и срабатывает каждый подписанный обработчик. Это отделяет задачи от обработчиков и обеспечивает удобное масштабирование. 🎯

Часто задаваемые вопросы

Урок «Listen: один триггер — несколько обработчиков» бесплатный?

Да — полный текст урока «Listen: один триггер — несколько обработчиков» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ansible Academy, подпишись на CoddyKit PRO. Курс Ansible Academy содержит 4 уроков всего.

Чему я научусь в уроке «Listen: один триггер — несколько обработчиков»?

Направьте одно уведомление нескольким обработчикам Ты практикуешь Ansible Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Ansible Academy?

Предыдущий опыт не требуется. Ansible Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Listen: один триггер — несколько обработчиков»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Ansible Academy?

Да. Каждый урок Ansible Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Уведомление обработчика об изменении
  2. Определение обработчиков и шаблонов перезапуска
  3. Когда запускаются обработчики и flush_handlers
  4. Listen: один триггер — несколько обработчиков
← Назад к Ansible Academy