Дымовые тесты, откат и уведомления
Проверяйте, восстанавливайте и документируйте развёртывание
«Дымовые тесты, откат и уведомления» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Развёртывание не заканчивается перезагрузкой
Завершённый сценарий ещё не означает, что приложение работает. Вам по-прежнему нужны дымовые тесты, путь для отката и уведомление. Замкните цикл. 🔁
Проверьте конечную точку дымовым тестом
Обратитесь к реальному маршруту с помощью модуля uri и проверьте, что получен код 200. Если приложение отвечает неправильно, развёртывание должно завершиться с явной ошибкой.
- name: Smoke test
ansible.builtin.uri:
url: https://app.example.com/health
status_code: 200
return_content: trueПроверьте правильную версию
Пойдите дальше: прочитайте ответ и используйте assert, чтобы подтвердить, что текущая версия совпадает с той, которую Вы только что выпустили.
- ansible.builtin.assert:
that:
- "app_version in smoke.content"
fail_msg: "Wrong version live"Объедините развёртывание в блок
Объедините развёртывание и тесты внутри block, чтобы одна ошибка могла запустить единый общий путь восстановления.
- block:
- import_role:
name: deploy
- import_tasks: smoke.ymlОткатывайте в rescue
Поместите логику отмены в rescue: повторно разверните предыдущую версию, чтобы неудачный выпуск никогда не оставлял пользователей с неисправным кодом.
rescue:
- name: Roll back
ansible.builtin.git:
repo: "{{ app_repo }}"
version: "{{ previous_version }}"
dest: /srv/appВсегда снова включайте трафик
Используйте always, чтобы вернуть узел за балансировщик нагрузки независимо от того, прошло развёртывание успешно или было выполнено восстановление. Никогда не оставляйте хост отрезанным от трафика.
always:
- community.general.haproxy:
state: enabled
host: "{{ inventory_hostname }}"
delegate_to: lb1Завершайтесь быстро и понятно
Если что-то не так, остановитесь с полезным сообщением с помощью модуля fail, чтобы в журнале было точно указано, что сломалось.
- ansible.builtin.fail:
msg: "Health check failed on {{ inventory_hostname }}"Уведомите команду
Сообщите результат. Задача community.general.slack отправляет сообщение об успехе или ошибке, чтобы команда знала, что развёртывание завершено.
- community.general.slack:
token: "{{ slack_token }}"
msg: "Deployed {{ app_version }} ✅"Электронная почта или чат — решать Вам
Предпочитаете электронную почту? Модуль mail отправит сводку. Подойдёт любой канал; главное — понятный автоматический сигнал о завершении развёртывания.
- community.general.mail:
to: ops@example.com
subject: "Deploy {{ app_version }} complete"Сохраните последнюю рабочую версию
Откат работает только при наличии истории. Запишите previous_version перед развёртыванием, чтобы rescue знал, что нужно восстановить.
vars:
previous_version: "2.4.0"
app_version: "2.4.1"Развёртывание, которому можно доверять
Тестируйте, выполняйте откат при ошибке, всегда восстанавливайте трафик и сообщайте команде. Это полноценное production-grade развёртывание от начала до конца. 🎉
Быстрая проверка
Один раздел гарантирует восстановление трафика.
Итоги
Вы замкнули цикл: дымовые тесты, откат в rescue, повторное включение в always и уведомления команды. Финальный проект завершён! 🏆
Часто задаваемые вопросы
Урок «Дымовые тесты, откат и уведомления» бесплатный?
Да — полный текст урока «Дымовые тесты, откат и уведомления» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Дымовые тесты, откат и уведомления»?
Проверяйте, восстанавливайте и документируйте развёртывание Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Дымовые тесты, откат и уведомления»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Проектирование проекта: роли и инвентарь
- Подготовка, усиление защиты и начальная настройка узлов
- Поэтапное развёртывание за балансировщиком
- Дымовые тесты, откат и уведомления