0Pricing
DevOps Bootcamp · Урок

Управление расхождениями состояния и согласование

Обнаруживайте, диагностируйте и устраняйте расхождения — различия между состоянием 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 — локальная установка не требуется.

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

  1. Отладка конфигураций Terraform
  2. Стратегии оптимизации производительности
  3. Аварийное восстановление с Terraform
  4. Управление расхождениями состояния и согласование
← Назад к DevOps Bootcamp