Управление расхождениями состояния и согласование
Обнаруживайте, диагностируйте и устраняйте расхождения — различия между состоянием Terraform и реальной инфраструктурой — до того, как они приведут к сбоям или неожиданным изменениям.
«Управление расхождениями состояния и согласование» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Что такое отклонение
Отклонение возникает, когда реальная инфраструктура изменяется за пределами Terraform: инженер меняет настройку в консоли или другой инструмент изменяет ресурс. Теперь состояние и действительность расходятся, и следующий apply может неожиданно отменить или перезаписать эти изменения.
Обнаружение отклонений с помощью plan
Обычный terraform plan обновляет состояние и показывает различия. Если ресурс отклонился от конфигурации, план сообщает об изменениях, которых нет в коде.
terraform planПлан только с обновлением состояния
Чтобы увидеть отклонения без предложения изменений конфигурации, используйте план refresh-only. Он обновляет состояние в соответствии с действительностью и показывает различия.
terraform plan -refresh-onlyЧтение отчёта об отклонениях
Terraform помечает атрибуты, которые отклонились, обнаруженным изменением. Тильда означает изменение на месте; пара «минус/плюс» показывает, что значение было добавлено или удалено за пределами Terraform.
# aws_instance.web has changed
~ instance_type = "t3.micro" -> "t3.small"Два способа устранить расхождение
Обнаружив отклонение, выберите направление:
- Принять действительность — обновить код в соответствии с новым состоянием.
- Восстановить код — применить конфигурацию, чтобы вернуть инфраструктуру к состоянию, описанному кодом.
Сохранение отклонения в состоянии
Если ручное изменение было преднамеренным, выполните apply -refresh-only, чтобы записать действительное состояние, а затем обновите код в соответствии с ним, чтобы будущие планы не содержали лишних изменений.
terraform apply -refresh-onlyОтмена отклонения
Если изменение было несанкционированным, обычный terraform apply вернёт инфраструктуру к объявленной конфигурации, отменив ручное редактирование.
terraform applyВыбор одного ресурса
Для точечного исправления -target ограничивает операцию одним ресурсом. Используйте этот параметр экономно: он может скрыть более масштабные отклонения.
terraform apply -target=aws_instance.webПредотвращение ложных отклонений
Некоторыми атрибутами управляет AWS или другие инструменты. Используйте ignore_changes, чтобы Terraform перестал конфликтовать из-за них.
resource "aws_instance" "web" {
lifecycle {
ignore_changes = [tags["LastScanned"]]
}
}Непрерывное обнаружение отклонений
Обнаруживайте отклонения на раннем этапе, запуская в CI план только с обновлением состояния по расписанию. Terraform Cloud предлагает встроенное обнаружение отклонений и уведомляет, когда состояние расходится с действительностью.
on:
schedule:
- cron: "0 6 * * *"Культура важнее инструментов
Лучшая профилактика отклонений — это процесс: ограничьте доступ на запись через консоль, направляйте все изменения через Terraform и рассматривайте ручные правки как инциденты. Инструменты обнаруживают отклонения, а дисциплина предотвращает их.
Быстрая проверка
Проверьте свои знания об управлении отклонениями.
Итоги: поддержание актуальности состояния
Теперь вы умеете работать с отклонениями:
- Обнаруживайте их с помощью
planилиplan -refresh-only. - Принимайте их через
apply -refresh-onlyи последующее обновление кода. - Отменяйте их обычным
apply. - Используйте
ignore_changesи проверки по расписанию, чтобы опережать проблемы.
Часто задаваемые вопросы
Урок «Управление расхождениями состояния и согласование» бесплатный?
Да — полный текст урока «Управление расхождениями состояния и согласование» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Управление расхождениями состояния и согласование»?
Обнаруживайте, диагностируйте и устраняйте расхождения — различия между состоянием Terraform и реальной инфраструктурой — до того, как они приведут к сбоям или неожиданным изменениям. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Управление расхождениями состояния и согласование»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Отладка конфигураций Terraform
- Стратегии оптимизации производительности
- Аварийное восстановление с Terraform
- Управление расхождениями состояния и согласование