$ terraform plan -target=brain

Troubleshooting Garden.
Сломанная конфигурация → починить.

Сэндбокс поднимается с заведомо сломанным HCL. Твоя задача: найти что не так, починить, и доказать verify-проверкой что решение работает.

Это не курс по фичам Terraform, а пять реальных инцидентов, которые случаются на проде. TTL: 30 минут на каждый.

Пять садов

Порядок не обязателен, каждый урок самодостаточен. Но 01 → 05 по нарастанию сложности.

  1. Garden 01

    Cycle Error

    random_id.keepers ссылается на ресурс, который зависит от того же random_id. Граф рекурсивный, plan не строится. Найди цикл, перепиши без обратной ссылки.

    ~18 мин
  2. Garden 02

    State и облако разъехались

    Кто-то отключил versioning через AWS CLI; параллельно завёлся orphan-бакет. Plan молчит. Покажи drift через refresh-only, прими решение по каждому случаю.

    ~20 мин
  3. Garden 03

    Import показывает на пустоту

    Два import-блока с опечатками в id. В облаке ресурсы есть, но с другими именами. Plan валится с «Cannot import non-existent remote object».

    ~16 мин
  4. Garden 04

    Checkov fail в pipeline

    CI красный: CKV_AWS_53 и CKV_AWS_21. Бакет реально публичный (продукт сказал), versioning suspended. Решай где чинить, где суппрессить с обоснованием.

    ~18 мин
  5. Garden 05

    Модуль протух, провайдер обновился

    Root на AWS provider v5, child-модуль написан под v3 (inline acl, versioning {}, encryption {}). init валится конфликтом версий. Перепиши под современный стиль.

    ~20 мин

Как устроен Garden-урок

Init-скрипт кладёт в sandbox готовый HCL с заложенной поломкой, что-то совпадающее с реальным production-инцидентом.

Первый шаг: воспроизвести ошибку через terraform CLI, чтобы убедиться что её точно видишь. Дальше идёт анализ (граф, refresh-only, AWS CLI), исправление и финальный verify.

Verify использует те же типы что в обычных уроках: terraform_state_resource, terraform_plan_clean, file_content, command_with_output_regex. Никаких specialised garden-проверок нет, методика одинаковая.

$ назад к полному списку /lessons