Управление расхождениями состояния и согласование
Обнаруживайте, диагностируйте и устраняйте расхождения — различия между состоянием Terraform и реальной инфраструктурой — до того, как они приведут к сбоям или неожиданным изменениям.
«Управление расхождениями состояния и согласование» — бесплатный урок Terraform Infrastructure as Code на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Terraform Infrastructure as Code, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Terraform Infrastructure as Code содержит 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) и разблокировать остальной курс Terraform Infrastructure as Code, подпишись на CoddyKit PRO. Курс Terraform Infrastructure as Code содержит 4 уроков всего.
Чему я научусь в уроке «Управление расхождениями состояния и согласование»?
Обнаруживайте, диагностируйте и устраняйте расхождения — различия между состоянием Terraform и реальной инфраструктурой — до того, как они приведут к сбоям или неожиданным изменениям. Ты практикуешь Terraform Infrastructure as Code с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Terraform Infrastructure as Code?
Предыдущий опыт не требуется. Terraform Infrastructure as Code на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Управление расхождениями состояния и согласование»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Terraform Infrastructure as Code?
Да. Каждый урок Terraform Infrastructure as Code включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Отладка конфигураций Terraform
- Стратегии оптимизации производительности
- Аварийное восстановление с Terraform
- Управление расхождениями состояния и согласование