0Pricing
DevOps Bootcamp · Урок

Определение обработчиков и шаблонов перезапуска

Напишите повторно используемые обработчики перезапуска служб

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

Где размещаются обработчики

Обработчики размещаются в отдельном разделе handlers плейбука, отдельно от обычных задач. Так связанные с реакцией действия остаются сгруппированными и понятными.

tasks:
  - name: Deploy config
    ansible.builtin.template:
      src: app.conf.j2
      dest: /etc/app.conf
    notify: Restart app
handlers:
  - name: Restart app
    ansible.builtin.service:
      name: app
      state: restarted

Обработчик — это задача

Обработчик использует точно такой же синтаксис, как задача: ключ name и вызов модуля. Разница только в том, что он ожидает уведомления.

Имя — это контракт

Имя обработчика — это строка, на которую другие задачи ссылаются в notify. Считайте его стабильной точной меткой, которую Вы будете использовать повторно.

Перезапуск с помощью service

Классический обработчик перезапуска использует модуль service со значением состояния restarted. Он останавливает и запускает службу одним шагом.

- name: Restart nginx
  ansible.builtin.service:
    name: nginx
    state: restarted

Перезагрузка и перезапуск

Предпочитайте состояние reloaded, если служба его поддерживает. При перезагрузке конфигурация перечитывается без разрыва соединений, в отличие от полного перезапуска.

- name: Reload nginx
  ansible.builtin.service:
    name: nginx
    state: reloaded

Используйте systemd напрямую

Модуль systemd даёт более точный контроль на узлах с systemd, включая daemon_reload после изменения файла службы.

- name: Restart app
  ansible.builtin.systemd:
    name: app
    state: restarted
    daemon_reload: true

Пусть обработчики остаются универсальными

Напишите один универсальный обработчик Перезапустить nginx и уведомляйте его из множества задач. Не копируйте одну и ту же логику перезапуска повсюду.

Обработчики выполняются в порядке определения

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

Порядок важен для зависимостей

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

Обработчики в ролях

В роли обработчики размещаются в handlers/main.yml. Задачи роли уведомляют их по имени, точно так же, как в обычном плейбуке.

Понятные имена

Используйте имена в форме действий, например Перезапустить nginx или Перезагрузить sshd. Понятные имена делают вывод читаемым, а строки notify — очевидными.

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

Вы изменили конфигурацию и хотите, чтобы работающая служба подхватила изменения без разрыва соединений. Какое состояние лучше выбрать?

Итоги

Теперь Вы умеете определять обработчики в разделе handlers, выбирать между перезапуском и перезагрузкой и полагаться на выполнение в порядке определения. 🎯

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

Урок «Определение обработчиков и шаблонов перезапуска» бесплатный?

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

Чему я научусь в уроке «Определение обработчиков и шаблонов перезапуска»?

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

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

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

Сколько времени занимает урок «Определение обработчиков и шаблонов перезапуска»?

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

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

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

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

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