Перейти к основному содержимому

Terraform в команде

Разработчику Архитектору Инженеру

Terraform в команде

Один разработчик может держать Terraform на ноутбуке. В компании добавляются review, compliance, on-call и разные cadence у приложения и инфраструктуры. Ниже — процессы, которые обычно вводят после первых успешных модулей.


Внедрение IaC

Переход с ручной консоли — инвестиция — новые навыки у ops, новые инструменты у dev, сдвиг мышления ("сначала PR, потом apply"). Убеждать менеджмент лучше болью, которую IaC снимает (простои при деплое, drift staging/prod, часы на восстановление), а не списком "Terraform декларативный".

Практичный старт:

Иногда IaC не окупается (короткий прототип, один сисадмин) — это нормальный вывод из аудита, а не провал.


Золотое правило Terraform

Окружениеplanapply
Dev / sandboxЛокальноЛокально допустим
StagingCI на каждый PRCI после approve, или Atlantis
ProductionCI, артефакт planТолько pipeline после merge; локальный apply запрещён

Дополнительно:

  • весь HCL в Git, state в remote backend с lock;
  • никаких "быстрых правок" в AWS Console для ресурсов под Terraform — только через код (drift);
  • версии Terraform, провайдеров и модулей зафиксированы (.terraform.lock.hcl).

Два пайплайна — приложение и инфраструктура

App repo: push → build → test → deploy image → K8s/VM
Infra repo: PR → validate → plan (comment) → approve → apply

Разбор:

  • Приложение меняется часто (десятки раз в день); VPC/RDS/IAM — реже, но ошибка дороже.
  • Infra PR ревьюят SRE/архитектор; app PR — feature team.
  • App deploy может читать outputs infra (subnet IDs, RDS endpoint) через remote state или service discovery.

Code review для HCL

Чек-лист ревьюера:

Стиль — terraform fmt, осмысленные имена ресурсов, мелкие модули (промышленный уровень — composable modules).


Atlantis, Terraform Cloud, GitHub Actions

Atlantis — bot в PR — комментарий atlantis plan / atlantis apply, lock на директорию, audit trail.

HCP Terraform / Terraform Cloud — remote run, policy (Sentinel/OPA), run triggers между workspace.

GitHub Actions — минимальный workflow:

on:
pull_request:
paths: ['live/**']
jobs:
plan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: hashicorp/setup-terraform@v3
- run: terraform init
working-directory: live/stage/services/webserver-cluster
- run: terraform plan -no-color -input=false
working-directory: live/stage/services/webserver-cluster

Apply в prod — отдельный workflow workflow_dispatch или push в main с environment protection rules.


Реалистичные сроки prod-инфраструктуры

Ориентиры для опытной команды (идеальный случай):

ТипПримерСрок
Managed сервисRDS1–2 недели
Stateless app на ASGNode-кластер2–4 недели
Stateful self-hostedElasticsearch на ASG2–4 месяца
Полная архитектураapp + сеть + мониторинг + security6–36 месяцев

Terraform ускоряет повторяемость, но не отменяет проектирование HA, backup и runbook.


См. также