Terraform state file испортился как восстановить и не потерять инфраструктуру
Рейтинг: 67.2% · 18 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
- cachego9376
- Сообщения: 22
- Зарегистрирован: Вт май 12, 2026 2:46 pm
Terraform state file испортился как восстановить и не потерять инфраструктуру
Случилась неприятность: в процессе terraform apply упало соединение, и теперь terraform.tfstate частично обновлён, а реальная инфраструктура в AWS не соответствует стейту. При запуске plan видит ресурсы как новые и хочет их пересоздать, хотя они уже существуют. Бэкапа стейта нет (знаю, знаю). Как выйти из этой ситуации без сноса всего?
✔ Лучший ответ сформирован автоматически — startup_founder
У нас в компании после похожего инцидента ввели правило: никакого прямого apply в продакшне без peer review плана в PR. Весь Terraform через Atlantis — он автоматически делает plan на каждый PR и apply только после мержа. Порядка стало значительно больше.
- secproxy7089
- Сообщения: 20
- Зарегистрирован: Чт май 14, 2026 5:48 am
Re: Terraform state file испортился как восстановить и не потерять инфраструктуру
Первым делом — terraform state list чтобы увидеть что terraform вообще знает. Потом terraform state show <resource> для проблемных ресурсов. Если ресурс в AWS есть, но в стейте его нет — используй terraform import <resource_type>.<name> <cloud_id>. Например, terraform import aws_instance.web i-0abc123def456. Это добавит существующий ресурс в стейт без пересоздания.
Re: Terraform state file испортился как восстановить и не потерять инфраструктуру
Для S3 бакетов: terraform import aws_s3_bucket.my_bucket my-bucket-name. Для большинства AWS-ресурсов import работает, только надо знать правильный формат ID — он в документации к каждому ресурсу. После импорта запускай plan и смотри diff — обычно Terraform хочет поменять пару тегов или атрибутов, которые не совпадают с кодом.
- zhenya_docker
- Сообщения: 23
- Зарегистрирован: Пт май 15, 2026 11:21 pm
Re: Terraform state file испортился как восстановить и не потерять инфраструктуру
После того как разгребёшь — сразу настрой remote state в S3 с версионированием: terraform { backend "s3" { bucket = "my-tf-state" key = "prod/terraform.tfstate" region = "eu-west-1" versioning = true } }. И добавь DynamoDB table для state locking — это предотвратит одновременные apply от разных людей. Это должно быть стандартом, а не опцией.
- svetlana_js
- Сообщения: 25
- Зарегистрирован: Пн май 11, 2026 2:56 pm
Re: Terraform state file испортился как восстановить и не потерять инфраструктуру
Развёрнутый алгоритм восстановления. Шаг 1 — сделай резервную копию текущего побитого стейта: cp terraform.tfstate terraform.tfstate.broken.bak. Шаг 2 — если был автоматический бэкап (terraform.tfstate.backup), посмотри его содержимое — иногда он актуальнее. Шаг 3 — для каждого ресурса который Terraform хочет пересоздать, проверь через AWS Console или CLI существует ли он реально. Шаг 4 — если ресурс существует, импортируй его командой terraform import. Шаг 5 — запусти terraform plan и внимательно читай diff. Атрибуты вроде tags, description обычно можно безболезненно обновить. Если plan хочет удалить и пересоздать ресурс (forces replacement) — разберись почему, часто это из-за неизменяемых атрибутов типа ami или subnet_id. Шаг 6 — terraform apply только когда план выглядит адекватно. Шаг 7 — после успеха немедленно переходи на remote state с версионированием. Урок на будущее: terraform workspace и remote backends с версионированием — это не опциональные фичи.
- ruslan_pro
- Сообщения: 24
- Зарегистрирован: Чт май 14, 2026 3:04 am
Re: Terraform state file испортился как восстановить и не потерять инфраструктуру
Ещё совет: terraform refresh обновляет стейт из реального состояния облака. Но осторожно — в Terraform 0.15+ его поведение изменили и он может сделать неожиданные вещи. Сначала читай доку для своей версии.
- startup_founder
- Сообщения: 1
- Зарегистрирован: Пн май 25, 2026 10:29 pm
- Репутация: 491
Re: Terraform state file испортился как восстановить и не потерять инфраструктуру
✔ Лучший ответ — сформирован автоматически
У нас в компании после похожего инцидента ввели правило: никакого прямого apply в продакшне без peer review плана в PR. Весь Terraform через Atlantis — он автоматически делает plan на каждый PR и apply только после мержа. Порядка стало значительно больше.
rm -rf /problems
Поделиться темой:
✈ Telegram
VK
- Похожие темы
-
- Вскрыли свой terraform.tfstate на 22 МБ — там призраки уволенных стажёров
8 ответов · 843 просмотров
-
-
- Terraform или OpenTofu в 2026? Стоит ли мигрировать после смены лицензии HashiCorp
7 ответов · 317 просмотров
-
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость