§ how it works · terraform
Каждая карточка ниже - пошаговая SVG-визуализация одной концепции Terraform. Что происходит с HCL, со state-файлом и с настоящим облаком на каждом шаге plan, apply и destroy. Хорошо для тех, у кого «работает, но я не понимаю почему».
Это рисованные схемы, а не sandbox. За «потрогать руками» - в уроки на LocalStack.
workflow · 6 шагов
Что Terraform делает на каждой команде. Три источника правды (HCL, state, облако), как они сходятся и расходятся, и почему apply без plan - плохая привычка.
workflow · 6 шагов
Откуда Terraform узнаёт, в каком порядке создавать ресурсы. Граф из implicit-refs, параллельные «слои», и почему destroy идёт ровно в обратном направлении.
state · 6 шагов
Что лежит внутри state-файла, зачем там serial и lineage, и почему пароль из HCL в нём оказывается открытым текстом. Развёрнутый JSON по слоям.
state · 6 шагов
Кто-то ткнул тег в AWS Console - и Terraform внезапно показывает изменения. Что такое drift, почему он бывает, и три способа с ним жить.
state · 5 шагов
S3 хранит state, DynamoDB держит lock. Что происходит, когда двое запускают apply одновременно, и почему «команда из одного» - единственный сценарий, где можно без этого жить.
state · 6 шагов
Что на самом деле сравнивает terraform plan. Зачем refresh, как из трёх источников получается один план, и что прячет -refresh=false.
state · 5 шагов
Три команды, которые правят state-файл напрямую: переименовать запись, забыть ресурс, всосать существующий из облака. Что меняют, чего не меняют, чем опасны.
state · 5 шагов
Декларативные блоки для переименования, выпиливания и затаскивания ресурсов. Что они дают сверх CLI, в каких версиях Terraform появились, и почему живут в git.
resources · 5 шагов
Два способа создать N одинаковых ресурсов. Один индексирует по числу, второй - по ключу. Удаление середины массива даёт совершенно разные планы.
resources · 6 шагов
create_before_destroy для zero-downtime, prevent_destroy для критичного, ignore_changes для дрейфа, replace_triggered_by для каскадной пересборки. Что каждый делает на практике.
variables · 6 шагов
Шесть источников значения для одной variable, выстроенные в очередь. Кто кого перебивает, и почему ваш .tfvars иногда «не применяется».
modules · 6 шагов
Что происходит на границе root → child module: ввод через variable, вывод через output, и почему модуль остаётся переиспользуемым только если он не лезет к глобальным провайдерам.
cicd · 6 шагов
Сохранить tfplan в файл, показать его человеку, применить ровно его - и не дать «случайно» доехать другому диффу. Канонический CI-pattern для Terraform.
cicd · 6 шагов
Workflow получает короткий JWT от GitHub, обменивает его на временные STS-creds, запускает Terraform - и через час всё это просто исчезает. Никаких access-key секретов.
cicd · 6 шагов
Между шагами plan и apply встаёт engine - Checkov, OPA или Sentinel. Он читает plan.json и решает, можно ли применять. Бакет без шифрования просто не пройдёт.