linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
Intro
Lessons
Footer
linuxlab-УчебникиЦеныО платформеКонфиденциальность и куки
Copyright © 2026 LinuxLab. Все права защищены.
linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
  • Введение
  • Уроки
  • How it works
  • База знаний
  • Шпаргалка
  • Capstone
  • Собеседование
home/terraform/kb/Основы Terraform

kb/core

Основы Terraform: init, plan, apply

Базовый цикл Terraform: HCL описывает желаемое состояние, `terraform init` ставит провайдеры, `plan` показывает diff с state, `apply` применяет изменения. Это фундамент, без понимания цикла невозможно работать ни с одним provider'ом.

  • tf-interpolation${...}: подстановка значений в строки

    ${expression} внутри строки: подстановка значения выражения. ${var.env}, ${aws_s3_bucket.demo.id}. Если выражение. Это единственное значение аргумента (без обёртки в строку), современный HCL разрешает писать без ${...}.

  • tf-lockfile.terraform.lock.hcl: фиксация версий провайдеров

    Lockfile фиксирует точные версии провайдеров и их хеши, чтобы у тебя и у CI всегда стояла та же сборка. Создаётся при terraform init, обновляется через init -upgrade. Коммитится в git.

  • tf-init-backendsBackend в Terraform: где живёт state

    Backend, это место хранения state-файла. По умолчанию local, рядом с HCL. Remote backends (S3, GCS, Terraform Cloud, http) дают совместный доступ и блокировку. В этом курсе используется только local; remote, обзорно.

  • hcl-syntaxHCL: язык, на котором пишут Terraform

    HCL (HashiCorp Configuration Language): это язык, на котором описывают желаемое состояние инфраструктуры. Похож на JSON, но людям читать легче: можно писать комментарии, переменные, циклы.

  • tf-applyterraform apply: применить план в реальном облаке

    apply берёт результат plan и реально вызывает API облака: создаёт, изменяет, удаляет ресурсы. После apply state обновляется. Это та команда, которая меняет деньги на инфру.

  • tf-destroyterraform destroy: снести всё, что было создано

    destroy удаляет все ресурсы, которые описаны в HCL и есть в state. По сути это apply с минусом перед всем. Незаменим для учебных задач и эфемерных окружений; в проде, крайняя мера.

  • tf-initterraform init: первая команда в любом проекте

    terraform init скачивает плагины-провайдеры (AWS, GCP и т.д.), создаёт файл с зафиксированными версиями (lockfile) и подготавливает рабочую директорию. Без этого ни plan, ни apply не запустятся.

  • tf-planterraform plan: посмотреть, что Terraform собирается сделать

    plan, это сухая прогонка: Terraform читает ваш HCL, читает state, и показывает diff между ними. Ничего не меняет в облаке. Главный инструмент, чтобы не сломать прод по ошибке.

  • tf-workspaceterraform workspace: несколько state в одной директории

    Workspace, это именованный slot для отдельного state-файла в одной директории с HCL. Полезно для очень похожих окружений с минимальной разницей. В этом курсе не используется; обычно лучше отдельные папки.

  • tf-version-constraintsVersion constraints в Terraform: required_version и провайдеры

    required_version фиксирует, какие версии terraform запускают этот код. required_providers.version, то же для провайдеров. Pessimistic оператор ~> 5.60, стандарт, разрешает минорные апдейты, запрещает мажорные.

  • tf-init-modulesКак terraform init подтягивает модули

    Когда в HCL есть блок module, terraform init скачивает исходники модуля (из registry, git или локальной папки) в .terraform/modules/. В этом курсе модули не пишем; статья, обзор как механика работает.

  • tf-cli-configКонфигурация Terraform CLI: terraformrc, env vars, TF_LOG

    Поведение Terraform CLI настраивается через файл ~/.terraformrc и переменные окружения TF_*. Здесь, кеш плагинов, TF_LOG для дебага, TF_VAR_* для переменных, TF_CLI_ARGS для глобальных флагов.

  • tf-referencesСсылки в HCL: как читать aws_s3_bucket.demo.bucket

    Любое значение в HCL можно получить через адрес: var.x, local.x, aws_s3_bucket.demo.arn, module.net.vpc_id, data.aws_region.current.name. Понимание этого синтаксиса, половина продуктивности в Terraform.

  • tf-functions-stringСтроковые функции HCL: format, join, replace, lower и другие

    В HCL функции для строк: format (как printf), join/split (массивы↔строки), replace (regex или текст), lower/upper/title (регистр), trimspace и trim*. Все pure, без побочных эффектов, удобны в locals.

  • hcl-typesТипы данных в HCL: string, number, list, map, object

    HCL поддерживает примитивы (string, number, bool) и сложные типы: list, set, map, tuple, object. Эта статья, про синтаксис каждого и про разницу между похожими (list vs tuple, map vs object): meta_description: "Типы данных HCL: string, number, bool, list, set, map, tuple, object. Что выбрать для variable, где разница между list и tuple, синтаксис каждого с примерами."

  • tf-conditional-expressionУсловия и null-safety: ?:, try, can, coalesce

    Тернарный оператор a ? b : c, простой if/else. try(expr, fallback) пытается вычислить или подставляет запасное. can(expr) возвращает true/false. coalesce(...): первый не-null. Все спасают от падений.

  • tf-functions-collectionФункции коллекций HCL: length, lookup, merge, concat, flatten

    Для list/set/map в HCL есть функции: length (размер), lookup (по ключу с default), merge (объединить map), concat (склеить list), flatten (раскрыть), keys/values. Базовый инструментарий трансформаций.

Footer
linuxlab-
Copyright © 2026 LinuxLab. Все права защищены.
Учебники
Цены
О платформе
Конфиденциальность и куки