Terraform по дефолту сидел в staging и destroy снёс пол-окружения

Теги: #Terraform
Рейтинг: 79.3% · 31 голосов
Docker, Kubernetes, Helm, Terraform, Ansible, GitLab CI, GitHub Actions: автоматизация деплоя, инфраструктура как код, мониторинг и observability.
Аватара пользователя
proxmoxmaker
Сообщения: 9
Зарегистрирован: 20 май 2026, 16:15

Terraform по дефолту сидел в staging и destroy снёс пол-окружения

Сообщение proxmoxmaker »

Потерял полдня. Terraform по дефолту оказался в workspace staging, я сделал destroy "тестового" стека — а снесло ECS, ALB и RDS в стейдже целиком. S3 versioning спас стейт, но осадочек на весь день.
👍 ❤️ 🔥 😄 🤔
✔ Лучший ответ сформирован автоматически — lawlorg
Классическая ловушка terraform workspace. Главный урок отсюда: workspace — это не замена разным state-файлам по каталогам, это способ иметь разные state для одного конфига. Большинство команд переходит на структуру каталогов envs/staging и envs/prod, где физически невозможно запустить plan/destroy в не том месте без явного cd. Ещё помогает `.terraform-version` в корне и pre-commit хук, который…
Перейти к ответу →
Аватара пользователя
svelte88
Сообщения: 63
Зарегистрирован: 12 май 2026, 11:49

Re: Terraform по дефолту сидел в staging и destroy снёс пол-окружения

Сообщение svelte88 »

Поэтому в CI всегда вешаем guard: проверка terraform workspace show перед любым apply/destroy, и отдельный manual approval на всё что не dev. Один стейт на все окружения это мина замедленного действия.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
alansmit
Сообщения: 84
Зарегистрирован: 13 май 2026, 00:35

Re: Terraform по дефолту сидел в staging и destroy снёс пол-окружения

Сообщение alansmit »

Да, вкрутил pre-apply хук с проверкой имени воркспейса плюс require approval на prod. Дёшево и спасает от тупых рук. Моих, в данном случае.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
seniorwarlock
Сообщения: 57
Зарегистрирован: 12 май 2026, 00:23

Re: Terraform по дефолту сидел в staging и destroy снёс пол-окружения

Сообщение seniorwarlock »

Попробовал — работает, но пришлось ещё права на папку поправить.
👍1 ❤️ 🔥 😄1 🤔
Аватара пользователя
lawlorg
Сообщения: 30
Зарегистрирован: 16 май 2026, 06:26

Re: Terraform по дефолту сидел в staging и destroy снёс пол-окружения

Сообщение lawlorg »

✔ Лучший ответ — сформирован автоматически
Классическая ловушка terraform workspace. Главный урок отсюда: workspace — это не замена разным state-файлам по каталогам, это способ иметь разные state для одного конфига. Большинство команд переходит на структуру каталогов envs/staging и envs/prod, где физически невозможно запустить plan/destroy в не том месте без явного cd. Ещё помогает `.terraform-version` в корне и pre-commit хук, который проверяет текущий workspace перед apply/destroy.
👍2 ❤️ 🔥 😄 🤔
Аватара пользователя
infern
Сообщения: 87
Зарегистрирован: 11 май 2026, 10:23

Re: Terraform по дефолту сидел в staging и destroy снёс пол-окружения

Сообщение infern »

После таких инцидентов стандартной практикой стало: для staging и prod держать отдельные AWS-аккаунты, тогда даже если промахнулся воркспейсом — credentials просто не дадут поднять руку на prod. Да, дороже оргструктура, но зато destroy в проде физически невозможен с dev-креденшалами.
👍 ❤️2 🔥 😄2 🤔
Аватара пользователя
kickmybox
Сообщения: 60
Зарегистрирован: 11 май 2026, 08:23

Re: Terraform по дефолту сидел в staging и destroy снёс пол-окружения

Сообщение kickmybox »

Для защиты от случайного destroy конкретных ресурсов — lifecycle { prevent_destroy = true } на RDS и ALB. Это не спасёт от ошибки с воркспейсом целиком, но хотя бы заставит terraform выдать ошибку вместо молчаливого удаления. Комбо из prevent_destroy + S3 versioning на state + отдельные аккаунты — это базовый минимум для стейджа с боевыми данными.
👍 ❤️1 🔥1 😄 🤔3
Аватара пользователя
kotlin123
Сообщения: 46
Зарегистрирован: 12 май 2026, 14:33

Re: Terraform по дефолту сидел в staging и destroy снёс пол-окружения

Сообщение kotlin123 »

Дополню еще одной миной. У aws_db_instance есть skip_final_snapshot, и если кто-то когда-то поставил true, чтобы стейдж быстрее пересоздавался, то при таком destroy база уходит вообще без финального снапшота. ТС хоть стейт вернул через versioning, а данные так не вернешь. Сделайте grep skip_final_snapshot по репе прямо сейчас, это одна команда.
👍1 ❤️ 🔥 😄1 🤔
Аватара пользователя
Macrano
Сообщения: 59
Зарегистрирован: 11 май 2026, 06:55

Re: Terraform по дефолту сидел в staging и destroy снёс пол-окружения

Сообщение Macrano »

@Kutz, последняя версия чего, терраформа? Воркспейсы как работали, так и работают, в 1.9-1.10 в этой части ничего не менялось. Бояться обновляться это конечно стратегия, но сидеть на каком-нибудь 0.13 сильно страшнее.
👍2 ❤️ 🔥1 😄 🤔
Аватара пользователя
Kutz
Сообщения: 71
Зарегистрирован: 16 май 2026, 02:21

Re: Terraform по дефолту сидел в staging и destroy снёс пол-окружения

Сообщение Kutz »

А на последней версии так же работает? Боюсь обновляться.
👍1 ❤️ 🔥 😄 🤔
Ответить
Поделиться темой: ✈ Telegram VK
Похожие запросы: terraform yandex cloud с чего начать новичкукак установить terraform и opentofu на linuxчто такое terraform state и tfstate простыми словамиудаленный backend terraform на object storage yandex cloudчто такое инфраструктура как код iac простыми словамиterraform plan и apply что делают и чем отличаются

Вернуться в «DevOps и CI/CD»

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

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