Сколько строк кода на Terraform вы написали за последний месяц?

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

Ответ

За последний месяц я написал и отрефакторил примерно 500-700 строк кода на HCL (Terraform). Основной объём работы пришёлся на:

  1. Разработку переиспользуемых модулей для стандартизации создания ресурсов AWS (VPC с NAT Gateway, EKS кластеров, RDS инстансов).
  2. Рефакторинг существующей конфигурации для улучшения структуры и использования for_each вместо count.
  3. Добавление новых окружений (staging) на основе модулей продакшена.

Пример модуля для создания безопасного S3 бакета для логов:

# modules/s3_logs_bucket/main.tf
variable "environment" {
  type        = string
  description = "Название окружения (prod, staging, dev)"
}

variable "project_name" {
  type        = string
  description = "Название проекта"
}

resource "aws_s3_bucket" "logs" {
  bucket = "${var.project_name}-logs-${var.environment}"

  tags = {
    Environment = var.environment
    ManagedBy   = "Terraform"
  }
}

# Включаем versioning для восстановления данных
resource "aws_s3_bucket_versioning" "logs" {
  bucket = aws_s3_bucket.logs.id
  versioning_configuration {
    status = "Enabled"
  }
}

# Блокируем публичный доступ к бакету
resource "aws_s3_bucket_public_access_block" "logs" {
  bucket = aws_s3_bucket.logs.id

  block_public_acls       = true
  block_public_policy     = true
  ignore_public_acls      = true
  restrict_public_buckets = true
}

# Включаем server-side шифрование по умолчанию
resource "aws_s3_bucket_server_side_encryption_configuration" "logs" {
  bucket = aws_s3_bucket.logs.id

  rule {
    apply_server_side_encryption_by_default {
      sse_algorithm = "AES256"
    }
  }
}