awesome-everything EN
↑ Обратно к восхождению

Деплой и инфра

Infrastructure as Code: собери drift-безопасный стек

Суть Практический проект — подними стек IaC с залоченным версионируемым удалённым состоянием, затем намеренно вызови столкновение конкурентности и событие drift и восстановись из каждого с доказательствами.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 240 min

Читать про залоченное состояние и тихие откаты — не то же самое, что прожить их. Подними небольшой, но реальный стек IaC с правильным удалённым состоянием, затем намеренно проведи его через два инцидента из урока — столкновение конкурентного apply и drift вне инструмента — и восстановись из каждого по-сеньорски, с доказательством на каждом шаге.

Цель

Преврати ментальную модель модуля в мышечную память: настрой версионируемый залоченный удалённый бэкенд, докажи, что лок реально блокирует конкурентный apply, вызови настоящий drift и разреши его осознанно вместо того, чтобы дать apply тихо его откатить, и держи секреты вне state.

Проект
0 из 7
Цель

Собери небольшой стек Terraform/OpenTofu (или Pulumi) с правильным удалённым, версионируемым, залоченным состоянием, затем намеренно воспроизведи и восстановись из столкновения конкурентности и события drift — доказывая каждый исход выводом команд, а не утверждением.

Требования
Критерии приёмки
  • Вывод команд (не проза), показывающий: чистый apply, холостой второй apply, падение 'Error acquiring the state lock' при конкурентности и plan -refresh-only, сообщающий вызванный drift.
  • Короткий разбор разрешения drift: какое ручное изменение ты закодифицировал в конфиг, какое дал apply откатить, и обоснование каждого — явно назвав риск тихого отката, которого ты избежал.
  • Доказательство, что бэкенд версионируемый и залоченный (конфиг бэкенда плюс листинг версий объекта или запись лока) и что файл состояния не содержит секрета в открытом виде.
  • Рефлексия в один абзац, связывающая упражнение обратно с модулем: как файл состояния выступал и источником истины, и опасностью в твоих прогонах.
Senior-стретч
  • Добавь джоб обнаружения drift по расписанию (CI-cron с plan -refresh-only), который открывает алерт или PR, когда реальность расходится с декларацией, чтобы drift ревьюили до того, как любой apply тихо его разрешит.
  • Вынеси стек в переиспользуемый module с входными переменными и инстанцируй его дважды (например staging и prod) из одного источника, доказав воспроизводимость между окружениями.
  • Собери CI-пайплайн с concurrency group и -lock-timeout, чтобы пересекающиеся прогоны ждали, а не падали, затем симулируй упавший прогон, оставивший несвежий лок, и задокументируй безопасное восстановление force-unlock + повторный plan.
  • Переведи один изменяемый ресурс на паттерн иммутабельной замены (новый образ / create_before_destroy) и покажи, как это сужает поверхность drift по сравнению с мутацией на месте.
Итог

Это цикл, который ты будешь прогонять на каждом реальном стеке IaC: положи состояние в версионируемый залоченный удалённый бэкенд раньше всего остального, докажи лок, попытавшись его сломать, относись к drift как к вопросу, на который отвечаешь через plan -refresh-only и осознанное решение оставить-или-откатить, а не слепой apply, и держи секреты полностью вне state. Сделав это раз на игрушечном стеке — включая намеренную поломку и восстановление с доказательствами — ты превращаешь продовую версию в мышечную память вместо сюрприза в 2 ночи.

Продолжить восхождение ↑Балансировка L4 vs L7: что каждый уровень видит и чего не видит
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources2
expand
  1. 01
  2. 02

Trademarks belong to their respective owners. Editorial reference only.