DevOps-инженер сегодня живёт в трёх реальностях одновременно: Dockerfile, манифесты Kubernetes и YAML пайплайнов. Каждая из них требует точного синтаксиса, знания подводных камней и терпения при отладке. Опечатка в resources.limits — и под падает по OOM. Забытый depends_on — и Terraform уничтожает базу данных. Именно здесь LLM превращается из игрушки в полноценного напарника: не потому что «пишет код», а потому что снимает рутину шаблонов, диагностики и ревью.
Ниже — 12 проверенных промтов, разбитых по уровню сложности: базовые (генерация артефактов), продвинутые (диагностика и оптимизация) и экспертные (архитектура и безопасность). Для каждого — задача, сам промт и пример результата. Все примеры синтаксиса соответствуют официальной документации Docker, Kubernetes и HashiCorp Terraform.
Базовые промты: генерация артефактов
1. Dockerfile с многоступенчатой сборкой
Задача: получить минимальный образ без ручного перебора баз.
Промт:
Ты senior DevOps. Сгенерируй многоступенчатый Dockerfile для Go-приложения (main.go в корне). Требования: базовый образ alpine, non-root пользователь, финальный образ < 20 МБ, кэширование слоёв go mod. Добавь комментарии к каждому слою.
Результат: LLM выдаёт FROM golang:1.22-alpine AS builder, COPY go.mod go.sum ./, RUN go mod download, затем FROM alpine:3.20, USER app, ENTRYPOINT. Такой промт экономит 10–15 минут на каждом новом сервисе.
2. Манифест Deployment + Service
Задача: быстро получить рабочий манифест с probes и ресурсами.
Промт:
Сгенерируй Kubernetes Deployment и Service для образа registry.local/api:1.4.0, 3 реплики, порт 8080. Обязательно: livenessProbe и readinessProbe на /healthz, resources.requests/limits, securityContext с runAsNonRoot: true. Формат — один YAML с разделителем ---.
Результат: готовый YAML с readinessProbe.httpGet.path: /healthz и securityContext.runAsNonRoot: true. Инженеру остаётся только поправить namespace.
3. Terraform-модуль для S3
Задача: типовой бакет с версионированием и шифрованием.
Промт:
Напиши Terraform-модуль (main.tf, variables.tf, outputs.tf) для AWS S3: версионирование включено, server_side_encryption_configuration с aws:kms, block_public_acls = true, lifecycle rule на переход в GLACIER через 90 дней. Провайдер aws версии ~> 5.0.
Результат: модуль с aws_s3_bucket_versioning, aws_s3_bucket_server_side_encryption_configuration и aws_s3_bucket_public_access_block. Проверяется через terraform validate.
4. GitHub Actions пайплайн
Задача: CI/CD без копипасты из чужих репозиториев.
Промт:
Создай .github/workflows/ci.yml: триггер на push в main и pull_request. Шаги: checkout, setup-go 1.22, go test ./..., сборка Docker-образа, пуш в ghcr.io с тегом ${{ github.sha }}. Используй кэш Go-модулей. Секреты — через secrets.GITHUB_TOKEN.
Результат: рабочий workflow с actions/setup-go@v5 и cache: true. Это снимает самую частую рутину — вспоминать точный синтаксис permissions и env.
Продвинутые промты: диагностика и оптимизация
5. Диагностика падения пода
Задача: понять, почему под в CrashLoopBackOff.
Промт:
Под в CrashLoopBackOff. Вот вывод: kubectl describe pod api-7d9f — Events: Back-off restarting failed container; Last State: Terminated, Reason: OOMKilled, Exit Code: 137. Вот фрагмент манифеста: resources.limits.memory: 256Mi. Предложи 3 гипотезы по приоритету и что проверить командой.
Результат: LLM объясняет, что Exit Code 137 = SIGKILL, вероятная причина — OOMKilled, и советует kubectl top pod и kubectl logs --previous. На практике это экономит полчаса гугления.
6. Оптимизация Docker-образа
Задача: уменьшить размер и ускорить сборку.
Промт:
Вот Dockerfile (вставь текст). Проанализируй: какие слои инвалидируют кэш, можно ли уменьшить размер, есть ли секреты в образе. Дай исправленный вариант с пояснениями по каждому изменению.
Результат: LLM находит COPY . . до npm install, переставляет слои, предлагает .dockerignore и multi-stage. Размер образа нередко падает в разы.
7. Ревью Terraform-плана
Задача: поймать разрушительные изменения до apply.
Промт:
Вот вывод terraform plan (вставь). Найди ресурсы с действием destroy или replace. Для каждого объясни риск и предложи безопасную альтернативу (например, create_before_destroy или lifecycle prevent_destroy).
Результат: LLM помечает aws_db_instance с forces replacement и советует lifecycle { prevent_destroy = true }. Это защита от классической катастрофы «Terraform снёс прод».
8. Отладка пайплайна CI
Задача: разобрать упавший job.
Промт:
Job упал на шаге docker build с ошибкой: failed to solve: process "/bin/sh -c npm ci" did not complete successfully: exit code: 1. Вот лог (вставь). Найди причину и предложи фикс.
Результат: LLM замечает отсутствие package-lock.json и советует закоммитить его или заменить на npm install. Точная диагностика без чтения 500 строк лога.
Экспертные промты: архитектура и безопасность
9. Аудит безопасности Kubernetes
Задача: найти небезопасные настройки.
Промт:
Проверь манифест (вставь) по CIS Kubernetes Benchmark: privileged, hostNetwork, runAsRoot, отсутствие readOnlyRootFilesystem, отсутствие NetworkPolicy. Выведи таблицу: проблема
| риск | исправление.
Результат: таблица с приоритетами. Например: privileged: true → критично → убрать и добавить allowPrivilegeEscalation: false.
10. Проектирование Terraform-структуры
Задача: разложить инфраструктуру на окружения.
Промт:
Спроектируй структуру Terraform-репозитория для 3 окружений (dev/stage/prod) с модулями vpc, eks, rds. Предложи layout директорий, способ хранения state (S3 + DynamoDB lock) и стратегию workspaces vs отдельные директории. Обоснуй выбор.
Результат: layout envs/dev, envs/prod, modules/vpc, бэкенд backend "s3" с dynamodb_table. LLM объясняет, почему workspaces хуже для изоляции прод-среды.
11. Политика NetworkPolicy
Задача: ограничить трафик между сервисами.
Промт:
Напиши NetworkPolicy: разрешить ingress в поды app=api только от подов app=frontend на порт 8080, запретить остальное. Namespace: production. Покажи default-deny и разрешающее правило.
Результат: две политики — default-deny с podSelector: {} и разрешающая с from: podSelector.matchLabels.app: frontend. Синтаксис соответствует официальной документации.
12. Секреты и переменные в CI/CD
Задача: не закоммитить секреты.
Промт:
Проверь workflow (вставь) на утечки секретов: echo переменных, передача secrets в build-args, логирование env. Предложи безопасный паттерн через OIDC для AWS и маскирование в GitHub Actions.
Результат: LLM находит echo ${{ secrets.AWS_KEY }} и заменяет на aws-actions/configure-aws-credentials с role-to-assume. Это реальный паттерн из документации GitHub.
Как встроить промты в рабочий процесс
| Уровень | Что снимает | Экономия времени |
|---|---|---|
| Базовые | шаблоны Dockerfile, YAML, Terraform | 10–20 мин на артефакт |
| Продвинутые | диагностика, ревью, оптимизация | 30–60 мин на инцидент |
| Экспертные | архитектура, безопасность | часы на проектирование |
Ключевое правило: LLM не заменяет terraform plan и kubectl apply --dry-run=server. Всегда прогоняйте результат через валидаторы — terraform validate, kubeconform, hadolint. Промт — это ускоритель черновика, а не замена ревью.
Эти 12 промтов закрывают 80% повседневной рутины: от генерации первого Dockerfile до аудита безопасности перед релизом. Начните с трёх базовых, добавьте диагностику падений — и вы заметите, что время на «скучную» инфраструктуру сокращается, а на архитектурные решения — растёт. Инфраструктура без слёз начинается с правильно сформулированного вопроса.
Комментарии