Terraform: базовые практики IaC

Terraform для новичка: базовые практики инфраструктуры как код, структура проекта, переменные и state. Понятное введение в IaC с примером конфигурации и командами.

Автор — Дмитрий Тыльный, Senior DevOps · 11 июня 2026 · 10 мин
Terraform: базовые практики IaC

Коротко. Terraform описывает инфраструктуру (серверы, сети, БД) кодом, а не кликами в панели. Вы пишете .tf-файлы декларативно, а Terraform приводит облако к нужному состоянию. Ключевое, что важно понять новичку — как работает state и почему его нельзя редактировать руками.

Что такое IaC и Terraform

Infrastructure as Code — управление инфраструктурой через версионируемые файлы. Плюсы: воспроизводимость, ревью изменений через git, откат, отсутствие «ручной магии». Terraform — самый популярный IaC-инструмент, работает с большинством облаков и провайдеров.

Пример конфигурации

Описание ресурса декларативно:

terraform {
  required_providers {
    docker = { source = "kreuzwerker/docker" }
  }
}

resource "docker_image" "app" {
  name = "nginx:alpine"
}

resource "docker_container" "web" {
  name  = "web"
  image = docker_image.app.image_id
  ports {
    internal = 80
    external = 8080
  }
}

Вы описываете что должно быть, а не как это создать пошагово.

Рабочий цикл и команды

КомандаЧто делает
terraform initИнициализировать проект, скачать провайдеры
terraform planПоказать, что изменится (без применения)
terraform applyПрименить изменения
terraform destroyУдалить созданные ресурсы

Правило: всегда смотрите plan перед apply.

State: главное, что нужно понять

Terraform хранит state — снимок того, что он создал, чтобы понимать разницу между текущим и желаемым состоянием. Важно:

  • ❌ Не редактируйте state-файл вручную.
  • ✅ Для команды храните state удалённо (например, в объектном хранилище) с блокировкой, чтобы не было конфликтов.
  • ✅ Не коммитьте state с секретами в git.

Базовые практики

  • ✅ Выносите значения в переменные (variables), не хардкодьте.
  • ✅ Разбивайте инфраструктуру на модули по мере роста.
  • ✅ Держите отдельные окружения (dev/prod) изолированно.
  • ✅ Проходите изменения через plan и код-ревью.

Частые вопросы

Terraform или Ansible?
Разное назначение: Terraform создаёт инфраструктуру (провижининг), Ansible настраивает уже существующие серверы (конфигурация). Часто используют вместе.

Обязателен ли Terraform джуну DevOps?
Базовое понимание IaC ценится, но сначала Linux, Docker и CI/CD. Terraform — следующий слой.

Где потренироваться без облака?
С провайдером Docker или local-провайдерами — можно освоить синтаксис и state бесплатно на своём компьютере.

Полезно? Подпишитесь на Telegram

Вступить в канал