Как организовывается управление кодом в Terraform

«Как организовывается управление кодом в Terraform» — вопрос из категории Terraform, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Terraform использует state-файлы для хранения текущего состояния инфраструктуры. Основные подходы к управлению:

  1. Локальный state (для тестов):
terraform {
  backend "local" {
    path = "terraform.tfstate"
  }
}
  1. Удаленный state (рекомендуется для прода):
  • Хранилища: S3, GCS, Azure Blob Storage с блокировкой через DynamoDB
  • Версионирование через бекенд

Пример для AWS:

terraform {
  backend "s3" {
    bucket = "my-terraform-state"
    key    = "prod/terraform.tfstate"
    region = "us-east-1"
    dynamodb_table = "terraform-locks"
  }
}
  1. Работа в команде:
  • Использование remote backends
  • Блокировки state (lock) для предотвращения конфликтов
  • Разделение state по окружениям (dev/stage/prod)
  1. Модули - для повторного использования кода. Пример:
module "vpc" {
  source = "terraform-aws-modules/vpc/aws"
  version = "3.14.0"
  # параметры...
}

Важно: никогда не коммитить state-файлы в git! Использовать .gitignore.