kb/variables
Variable-блок принимает входные данные (CLI -var, env TF_VAR_*, .tfvars, default). Output-блок отдаёт значения наружу для переиспользования. Locals, вычисляемые внутренние имена. Базовая грамматика любого конфига сложнее hello-world.
.tfvars, файлы со значениями переменных (HCL или JSON): terraform.tfvars и *.auto.tfvars читаются автоматически, остальные через -var-file. Главный механизм разделения «код vs конфигурация окружения».
locals: блок с именами, видимыми только внутри HCL (не вход, не выход). Удобны для DRY: один раз сосчитал общий префикс или теги: везде используешь через local.x. Не путать с variable (вход) и output (выход).
output, это значение, которое Terraform показывает после apply и сохраняет в state. Используется для (а) показать пользователю ID/ARN созданного ресурса, (б) передать значения между модулями, (в) скриптам через terraform output -raw.
variable, параметр, который принимает значение снаружи (CLI, env, .tfvars). Объявляешь в HCL: type, default, description, validation. Используешь как var.name. Нужен чтобы убрать хардкод и переиспользовать один HCL для разных окружений.
Источников шесть с приоритетом: -var в CLI > -var-file > *.auto.tfvars (по алфавиту) > terraform.tfvars > env TF_VAR_* > default. Если значения нет нигде. Terraform спросит интерактивно. Понимание приоритета критично для CI/CD.