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

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

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

  • diff plan — только ожидаемые изменения, нет mass destroy;
  • секреты не в коде, sensitive на outputs;
  • prevent_destroy на state bucket, prod DB;
  • новые модули — pin version, документированы variables;
  • IAM — least privilege (211.md).

Стиль: 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.


См. также

См. также

Другие статьи этого же раздела в боковом меню (как на странице "О разделе").