Если Terraform plan внезапно показывает пересоздание рабочего сервера, выполнять apply вслепую нельзя. Это может привести к простою и потере данных.
Почему возникает проблема
Пересоздание возникает из-за изменения immutable-полей, расхождения state с реальностью, ручных правок в облаке, обновления provider или неправильного import существующего ресурса.
Что проверяю
- Какое именно поле forcing replacement.
- Совпадает ли state с реальным ресурсом.
- Не менялся ли provider или модуль.
- Есть ли данные на диске, который будет пересоздан.
- Нужен ли lifecycle ignore_changes или import.
Как решаю задачу
Я сначала читаю diff и определяю риск. Цель - понять, действительно ли нужно пересоздание или Terraform неправильно видит текущее состояние.
- Разбираю plan построчно.
- Проверяю state и реальный ресурс.
- Делаю backup state перед правками.
- Исправляю import, параметры или lifecycle.
- Повторяю plan до безопасного результата.
Что будет на выходе
- Terraform перестает пересоздавать production без причины.
- State становится ближе к реальности.
- Риск apply снижается.
- Команда понимает, какие изменения безопасны.
Что подготовить
- Вывод terraform plan.
- Код Terraform.
- Доступ к state или backend.
- Информацию, какие ресурсы критичны.
Вопросы и ответы
Можно ли просто добавить ignore_changes?
Иногда да, но сначала нужно понять, почему Terraform видит изменение.
Нужно ли делать backup state?
Да. Перед ручными операциями со state это обязательная страховка.
Нужна похожая задача?
Опишите, что именно не работает и где это видно. Я быстро разберу симптомы, проверю техническую причину и предложу понятный план исправления без лишних созвонов и затяжки.