15 промтов для Terraform и IaC: от модулей до multi-cloud

Введение

Terraform давно стал стандартом де-факто для управления инфраструктурой как кодом (IaC). Однако даже опытные инженеры тратят часы на написание модулей, отладку state-файлов и настройку multi-cloud окружений. По данным опроса HashiCorp за 2025 год, более 70% команд используют Terraform в production, но при этом 60% жалуются на сложность работы с state и модулями. В этой подборке — 15 готовых промтов, которые помогут ускорить разработку, избежать типовых ошибок и упростить работу с multi-cloud. Каждый промт можно скопировать и адаптировать под свой проект.

1. Генерация базового модуля VPC

Для чего: Быстрое создание модуля VPC для AWS с настройками подсетей, NAT и security groups.
Промт: «Создай модуль Terraform для VPC в AWS с переменными для CIDR, количеством публичных и приватных подсетей, включением NAT Gateway. Используй source 'hashicorp/subnets/cidr' для расчёта подсетей. Добавь output для ID VPC и списка подсетей.»
Пример использования:

module "vpc" {
  source     = "./modules/vpc"
  cidr_block = "10.0.0.0/16"
  public_subnets_count  = 2
  private_subnets_count = 2
  enable_nat_gateway    = true
}

2. Импорт существующей инфраструктуры в state

Для чего: Перенос уже созданных ресурсов под управление Terraform без пересоздания.
Промт: «Напиши инструкцию по импорту существующего S3 bucket (my-app-bucket) и Security Group (sg-12345) в state Terraform. Используй terraform import и покажи пример блоков resource для этих ресурсов. Укажи, как проверить state после импорта.»
Пример команды:

terraform import aws_s3_bucket.my_bucket my-app-bucket
terraform import aws_security_group.my_sg sg-12345

3. Обработка ошибок drift detection

Для чего: Автоматическое обнаружение изменений инфраструктуры, сделанных вручную, и их устранение.
Промт: «Опиши, как настроить в CI/CD (GitHub Actions) задачу для ежедневного запуска terraform plan — выявления drift. Используй команду 'terraform plan -detailed-exitcode' и отправляй уведомление в Slack при обнаружении изменений. Приведи пример workflow.»
Пример кода:

name: Drift Detection
on:
  schedule:
    - cron: '0 6 * * *'
jobs:
  plan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - run: terraform plan -detailed-exitcode

4. Multi-cloud модуль для Kubernetes кластера

Для чего: Единый модуль для развёртывания Kubernetes в AWS (EKS) и GCP (GKE) с одинаковыми параметрами.
Промт: «Создай модуль Terraform для развёртывания Kubernetes кластера с поддержкой AWS EKS и GCP GKE. Используй count с переменной cloud_provider. Для AWS добавь поддержку node groups, для GCP — node pools. Выведи kubeconfig для обоих провайдеров.»
Пример вызова:

module "k8s" {
  source         = "./modules/k8s"
  cloud_provider = "aws"
  cluster_name   = "prod-cluster"
  node_count     = 3
}

5. Работа с Terraform Cloud и remote state

Для чего: Настройка удалённого хранения state с блокировками и версионированием.
Промт: «Настрой backend для Terraform Cloud в файле configuration.tf. Укажи organisation, workspace name, включи автоматическое создание workspace. Добавь переменные окружения для токена доступа.»
Пример:

terraform {
  backend "remote" {
    hostname     = "app.terraform.io"
    organization = "my-org"
    workspaces {
      name = "prod-infra"
    }
  }
}

6. Промт для написания собственных provider'ов

Для чего: Создание кастомного Terraform provider для внутреннего API компании.
Промт: «Опиши структуру кастомного Terraform provider на Go для управления ресурсами 'widget' и 'gadget'. Используй terraform-plugin-sdk v2. Покажи примеры функций CRUD, схемы ресурса и документации.»
Пример структуры:

func resourceWidgetCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
  // код создания
}

7. Оптимизация плана с помощью модулей

Для чего: Ускорение terraform plan за счёт кэширования модулей и параллелизма.
Промт: «Настрой кэширование модулей Terraform с помощью .terraform.lock.hcl и terraform providers lock. Укажи, как использовать -parallelism=20 для ускорения plan. Приведи пример Makefile с целями plan и apply.»
Пример Makefile:

plan:
    terraform plan -parallelism=20
apply:
    terraform apply -auto-approve -parallelism=20

8. Управление секретами через Vault

Для чего: Интеграция HashiCorp Vault для динамических секретов в Terraform.
Промт: «Настрой data source vault_generic_secret для получения пароля БД из Vault. Используй vault provider и укажи mount path 'secret'. Покажи, как передать пароль в aws_db_instance.»
Пример:

data "vault_generic_secret" "db_pass" {
  path = "secret/data/db"
}
resource "aws_db_instance" "main" {
  password = data.vault_generic_secret.db_pass.data["password"]
}

9. Промт для тестирования инфраструктуры с Terratest

Для чего: Написание автоматических тестов для Terraform модулей.
Промт: «Напиши Go-тест с использованием Terratest для проверки создания S3 bucket. Проверь, что bucket существует, имеет правильный ACL и теги. Используй terraform init, apply, output и destroy.»
Пример кода:

func TestS3Bucket(t *testing.T) {
  terraformOptions := &terraform.Options{
    TerraformDir: "./fixtures/s3-bucket",
  }
  defer terraform.Destroy(t, terraformOptions)
  terraform.InitAndApply(t, terraformOptions)
  bucketID := terraform.Output(t, terraformOptions, "bucket_id")
  assert.NotEmpty(t, bucketID)
}

10. Модуль для настройки CI/CD в GitLab

Для чего: Полный pipeline для Terraform в GitLab с линтингом, планированием и apply.
Промт: «Опиши .gitlab-ci.yml для Terraform: используй image hashicorp/terraform:1.6, этапы validate, plan, apply. Добавь ручной запуск apply для ветки main. Используй переменные окружения для AWS credentials.»
Пример:

stages:
  - validate
  - plan
  - apply
validate:
  script: terraform validate

11. Работа с Terraform Registry и публикация модуля

Для чего: Публикация собственного модуля в публичный или приватный реестр.
Промт: «Напиши инструкцию по созданию Terraform модуля и публикации в Terraform Registry. Включи файлы README.md, versions.tf, examples/. Покажи, как настроить репозиторий GitHub для автоматической синхронизации.»
Пример структуры:

my-module/
├── main.tf
├── variables.tf
├── outputs.tf
├── README.md
└── examples/

12. Промт для миграции state между бэкендами

Для чего: Перенос state из локального файла в S3 или Terraform Cloud.
Промт: «Напиши пошаговые команды для миграции state из локального backend в S3 с DynamoDB locking. Используй terraform init -reconfigure и проверь, что state скопировался.»
Команды:

terraform init -migrate-state -backend-config="bucket=my-state-bucket"

13. Безопасное использование for_each и count

Для чего: Создание множества ресурсов без дублирования кода с правильным управлением зависимостями.
Промт: «Создай пример использования for_each для создания нескольких IAM пользователей с разными политиками. Используй map переменной. Покажи, как обработать удаление пользователя без ошибок state.»
Пример:

variable "users" {
  default = {
    alice = "arn:aws:iam::aws:policy/AdministratorAccess"
    bob   = "arn:aws:iam::aws:policy/ReadOnlyAccess"
  }
}
resource "aws_iam_user" "this" {
  for_each = var.users
  name     = each.key
}

14. Промт для настройки Terraform Sentinel policy

Для чего: Внедрение политик безопасности и compliance в Terraform Cloud.
Промт: «Напиши Sentinel policy, которая запрещает создание S3 bucket без encryption. Используй встроенную функцию tfplan. Покажи, как загрузить policy в Terraform Cloud.»
Пример политики:

import "tfplan"
main = rule {
  all tfplan.resources.aws_s3_bucket as _, buckets {
    buckets.applied.server_side_encryption_configuration exists
  }
}

15. Multi-cloud мониторинг с CloudWatch и Stackdriver

Для чего: Единый модуль для настройки мониторинга в AWS и GCP.
Промт: «Создай модуль для создания метрик и алертов в AWS CloudWatch и GCP Cloud Monitoring. Используй count с переменной cloud. Для AWS — CloudWatch Alarm, для GCP — AlertPolicy. Выведи ARN алертов.»
Пример вызова:

module "monitoring" {
  source       = "./modules/monitoring"
  cloud        = "aws"
  alarm_email  = "admin@example.com"
}

Заключение

Эти 15 промтов покрывают 90% повседневных задач инженера Terraform — от модулей и state до multi-cloud и безопасности. Сохраните эту подборку как шпаргалку: копируйте промты, адаптируйте под свои проекты и автоматизируйте рутину. Для углублённого изучения рекомендую официальную документацию HashiCorp и репозиторий terraform-providers. Начните с первого промта — создайте модуль VPC, и вы увидите, как IaC становится прозрачным и управляемым.

← Все статьи

Комментарии

Читайте также

C# и .NET — Разработка на платформе Microsoft: Создание реальных REST API с помощью ИИ-руководства

17 июля 2026

Подключаем ESP32-CAM (OV2640/OV7670) к AI-агенту ASI Biont: компьютерное зрение, распознавание объектов и автоматизация безопасности

17 июля 2026

Топ-12 нейросетей для генерации видео: что умеют в 2026 году

17 июля 2026

Grafana + ASI Biont: AI-агент для мониторинга инфраструктуры без кода и SQL

17 июля 2026

Профессиональный промпт-инжиниринг: обоснованный данными подход к освоению производственных промптов в 2026 году

17 июля 2026

15 промтов для миграции кода: Python 2→3, JS→TS, REST→GraphQL

17 июля 2026

Кто платит за ИИ-продуктивность: почему выгорают middle-инженеры

17 июля 2026

Как перестать бояться фриланса: обзор курса «Фриланс — работа на себя» на Asibiont с AI-обучением

17 июля 2026

Интеграция устройств 1-Wire (DS18B20, iButton) с AI-агентом ASI Biont: мониторинг температуры и управление через чат

17 июля 2026