Постмортем: terraform apply с auto-approve снёс нам прод на 4 часа
Рейтинг: 43.6% · 6 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
Постмортем: terraform apply с auto-approve снёс нам прод на 4 часа
Делюсь пока горячо, может кого убережёт.
Вводные: прод в Yandex Cloud, terraform 1.9, state в s3-совместимом бакете, апплай из gitlab ci. Полгода назад кто-то добавил auto-approve в прод-пайплайн чтобы не ждать (спойлер: это был я).
Таймлайн по Москве:
14:10 дежурный руками поправил security group в консоли облака, открыл порт для подрядчика. Быстро же, зачем MR.
16:40 мерж обычного MR с новой нодой для воркеров.
16:42 apply. Терраформ увидел drift и привёл всё к коду: пересоздал security group, а за ней по цепочке таргет-группу балансера. Балансер остался без бэкендов.
16:43 прод лежит. Алерты молчат, потому что healthcheck мониторился через сам балансер (да).
17:20 поняли что лежим, поддержка клиентов прибежала раньше алертов.
19:05 думаете откатили? нет. State разъехался, пришлось руками через yc cli и terraform import собирать, балансер пересобрали заново.
20:50 поднялись.
Итого 4 часа, по деньгам порядка 600к недополученных заказов.
Что меняем: auto-approve выпилен, plan постится в MR и апрувится вторым человеком, ручные правки в консоли запрещены (роли только на чтение всем кроме дежурных), drift detection кроном раз в час, healthcheck переехал на внешний мониторинг.
Кидайте помидоры, ну или свои истории.
Вводные: прод в Yandex Cloud, terraform 1.9, state в s3-совместимом бакете, апплай из gitlab ci. Полгода назад кто-то добавил auto-approve в прод-пайплайн чтобы не ждать (спойлер: это был я).
Таймлайн по Москве:
14:10 дежурный руками поправил security group в консоли облака, открыл порт для подрядчика. Быстро же, зачем MR.
16:40 мерж обычного MR с новой нодой для воркеров.
16:42 apply. Терраформ увидел drift и привёл всё к коду: пересоздал security group, а за ней по цепочке таргет-группу балансера. Балансер остался без бэкендов.
16:43 прод лежит. Алерты молчат, потому что healthcheck мониторился через сам балансер (да).
17:20 поняли что лежим, поддержка клиентов прибежала раньше алертов.
19:05 думаете откатили? нет. State разъехался, пришлось руками через yc cli и terraform import собирать, балансер пересобрали заново.
20:50 поднялись.
Итого 4 часа, по деньгам порядка 600к недополученных заказов.
Что меняем: auto-approve выпилен, plan постится в MR и апрувится вторым человеком, ручные правки в консоли запрещены (роли только на чтение всем кроме дежурных), drift detection кроном раз в час, healthcheck переехал на внешний мониторинг.
Кидайте помидоры, ну или свои истории.
✔ Лучший ответ сформирован автоматически — juniorstack
@jackdd, У нас было почти то же самое, только спасло бы prevent_destroy. С тех пор на все критичные ресурсы (балансеры, бд, dns-зоны) вешаю lifecycle prevent_destroy = true и сплю спокойно. В провайдере Yandex Cloud это нормально работает, terraform просто падает с ошибкой вместо пересоздания. Стоит ноль, внедряется за вечер.
- juniorstack
- Сообщения: 62
- Зарегистрирован: 12 май 2026, 12:04
Re: Постмортем: terraform apply с auto-approve снёс нам прод на 4 часа
✔ Лучший ответ — сформирован автоматически
@jackdd, У нас было почти то же самое, только спасло бы prevent_destroy. С тех пор на все критичные ресурсы (балансеры, бд, dns-зоны) вешаю lifecycle prevent_destroy = true и сплю спокойно. В провайдере Yandex Cloud это нормально работает, terraform просто падает с ошибкой вместо пересоздания. Стоит ноль, внедряется за вечер.
Re: Постмортем: terraform apply с auto-approve снёс нам прод на 4 часа
@Donegal, формально это не постмортем, а исповедь. нет root cause по 5 why. ручная правка дежурного это симптом, причина в том что путь через MR занимал у вас наверняка минут 20-30 и людям проще руками. почините процесс, а не людей
Re: Постмортем: terraform apply с auto-approve снёс нам прод на 4 часа
@Matemate, Запрещать ручные правки бесполезно, в следующий раз дежурный так же откроет порт, просто никому не скажет. Лучше дайте быстрый легальный путь: отдельный модуль для временных правил с ttl и упрощённым апрувом. Запрет без альтернативы всегда обходится.
Поделиться темой:
✈ Telegram
VK
- Похожие темы
-
- Вскрыли свой terraform.tfstate на 22 МБ — там призраки уволенных стажёров
12 ответов · 850 просмотров
-
-
-
- Terraform или OpenTofu в 2026? Стоит ли мигрировать после смены лицензии HashiCorp
7 ответов · 321 просмотров
-
-
- Terraform state file испортился как восстановить и не потерять инфраструктуру
9 ответов · 23 просмотров
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость