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/how/tf-lifecycle

how/workflow

Главный цикл Terraform: init → plan → apply → destroy

Что Terraform делает на каждой команде. Три источника правды (HCL, state, облако), как они сходятся и расходятся, и почему apply без plan - плохая привычка.

Terraform - это машина, которая держит три копии одной мысли в согласии:

  • HCL-файлы - то, что ты хочешь. Желаемое состояние.
  • state-файл (terraform.tfstate) - то, что Terraform думает про реальность. Свой кэш.
  • облако - то, что есть на самом деле. Настоящие ресурсы у провайдера (или у LocalStack).

Жизненный цикл - это четыре команды, каждая работает со своим набором этих трёх источников. В первом учебном уроке ты прогонишь их по очереди на одном S3-бакете в LocalStack (см. tf-init, tf-plan, tf-apply, tf-destroy). Жми ▶ - посмотрим, что происходит за каждой командой.

step 1/6·00 · ничего ещё не запускали
MAIN.TFжелаемое состояниеTERRAFORM.TFSTATEчто terraform знаетLOCALSTACK / AWSреальностьresource "aws_s3_bucket" "demo" { bucket = "linuxlab-…" tags = { Owner = "student" }}resource "random_id" "suffix" { byte_length = 4}{"version": 4,"serial": 0,"lineage": "8f2a-…","resources": [(пусто)]}RESOURCES(пусто)ничего ещё не запускали

§ шаги

  1. Папка проекта с одним файлом main.tf. В нём описаны два ресурса: бакет S3 и случайный суффикс к его имени.

    State пустой. Облако пустое. Terraform пока не видел ни того ни другого. Команды ниже идут по очереди.

итого

Что важно запомнить:

  • init бежит один раз на проект (и после смены провайдера/backend). Скачивает плагины, создаёт .terraform.lock.hcl.
  • plan ничего не меняет. Безопасно гонять сколько угодно - между refresh и diff всё происходит у тебя в голове и в RAM, не в облаке.
  • apply - единственная команда, которая реально что-то создаёт. И единственная, которая трогает state.
  • После apply повторный plan обязан показывать No changes. Если показывает - это [[drift|дрейф]], идёшь разбираться.
  • destroy симметричен apply: state пустеет, облако пустеет. Зеркало.

Дальше: tf-state-anatomy про то, что лежит внутри state, и tf-drift про то, как HCL и облако расходятся.

§ копнуть в базу знаний

  • tf-initterraform init - что делает и почему обязателен
  • tf-planterraform plan - рефреш, дифф, exit-коды
  • tf-applyterraform apply - что меняет, в каком порядке
  • tf-destroyterraform destroy - зеркало apply
  • tf-stateЧто внутри state-файла

§ попробовать руками

  • ›tf-beginner-01-hello-s3- Hello, S3: первый ресурс в Terraform
  • ›tf-beginner-04-state- State: что это и зачем
  • ›tf-beginner-06-destroy- Destroy: как корректно сносить
Footer
linuxlab-
Copyright © 2026 LinuxLab. Все права защищены.
Учебники
Цены
О платформе
Конфиденциальность и куки