Terraform state file испортился как восстановить и не потерять инфраструктуру

Рейтинг: 67.2% · 18 голосов
Docker, Kubernetes, Helm, Terraform, Ansible, GitLab CI, GitHub Actions: автоматизация деплоя, инфраструктура как код, мониторинг и observability.
Ответить
Аватара пользователя
cachego9376
Сообщения: 22
Зарегистрирован: Вт май 12, 2026 2:46 pm

Terraform state file испортился как восстановить и не потерять инфраструктуру

Сообщение cachego9376 »

Случилась неприятность: в процессе terraform apply упало соединение, и теперь terraform.tfstate частично обновлён, а реальная инфраструктура в AWS не соответствует стейту. При запуске plan видит ресурсы как новые и хочет их пересоздать, хотя они уже существуют. Бэкапа стейта нет (знаю, знаю). Как выйти из этой ситуации без сноса всего?
👍 ❤️1 🔥 😄 🤔
✔ Лучший ответ сформирован автоматически — startup_founder
У нас в компании после похожего инцидента ввели правило: никакого прямого apply в продакшне без peer review плана в PR. Весь Terraform через Atlantis — он автоматически делает plan на каждый PR и apply только после мержа. Порядка стало значительно больше.
Перейти к ответу →
Аватара пользователя
secproxy7089
Сообщения: 20
Зарегистрирован: Чт май 14, 2026 5:48 am

Re: Terraform state file испортился как восстановить и не потерять инфраструктуру

Сообщение secproxy7089 »

Первым делом — terraform state list чтобы увидеть что terraform вообще знает. Потом terraform state show <resource> для проблемных ресурсов. Если ресурс в AWS есть, но в стейте его нет — используй terraform import <resource_type>.<name> <cloud_id>. Например, terraform import aws_instance.web i-0abc123def456. Это добавит существующий ресурс в стейт без пересоздания.
👍1 ❤️1 🔥 😄 🤔
Аватара пользователя
stas_api
Сообщения: 3
Зарегистрирован: Пн май 11, 2026 1:05 am

Re: Terraform state file испортился как восстановить и не потерять инфраструктуру

Сообщение stas_api »

Для S3 бакетов: terraform import aws_s3_bucket.my_bucket my-bucket-name. Для большинства AWS-ресурсов import работает, только надо знать правильный формат ID — он в документации к каждому ресурсу. После импорта запускай plan и смотри diff — обычно Terraform хочет поменять пару тегов или атрибутов, которые не совпадают с кодом.
👍6 ❤️1 🔥4 😄 🤔1
Аватара пользователя
zhenya_docker
Сообщения: 23
Зарегистрирован: Пт май 15, 2026 11:21 pm

Re: Terraform state file испортился как восстановить и не потерять инфраструктуру

Сообщение zhenya_docker »

После того как разгребёшь — сразу настрой 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 от разных людей. Это должно быть стандартом, а не опцией.
👍2 ❤️ 🔥 😄 🤔1
Аватара пользователя
svetlana_js
Сообщения: 25
Зарегистрирован: Пн май 11, 2026 2:56 pm

Re: Terraform state file испортился как восстановить и не потерять инфраструктуру

Сообщение svetlana_js »

Развёрнутый алгоритм восстановления. Шаг 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 с версионированием — это не опциональные фичи.
👍1 ❤️ 🔥2 😄 🤔1
Аватара пользователя
ruslan_pro
Сообщения: 24
Зарегистрирован: Чт май 14, 2026 3:04 am

Re: Terraform state file испортился как восстановить и не потерять инфраструктуру

Сообщение ruslan_pro »

Ещё совет: terraform refresh обновляет стейт из реального состояния облака. Но осторожно — в Terraform 0.15+ его поведение изменили и он может сделать неожиданные вещи. Сначала читай доку для своей версии.
👍2 ❤️1 🔥 😄 🤔
Аватара пользователя
startup_founder
Сообщения: 1
Зарегистрирован: Пн май 25, 2026 10:29 pm
Репутация: 491

Re: Terraform state file испортился как восстановить и не потерять инфраструктуру

Сообщение startup_founder »

✔ Лучший ответ — сформирован автоматически
У нас в компании после похожего инцидента ввели правило: никакого прямого apply в продакшне без peer review плана в PR. Весь Terraform через Atlantis — он автоматически делает plan на каждый PR и apply только после мержа. Порядка стало значительно больше.
👍 ❤️ 🔥 😄 🤔
rm -rf /problems
Ответить
Поделиться темой: ✈ Telegram VK

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость