Код, который пишет сам себя: 15 промтов для DevOps, экономящих часы работы

Вы когда-нибудь тратили полдня на написание Terraform-конфигурации для типового окружения? Или часами разбирали логи, пытаясь найти причину падения прод-сервиса? Я — да. И именно поэтому я начал активно использовать AI в своей повседневной DevOps-практике. Это не просто модная игрушка, а реальный инструмент, который позволяет сосредоточиться на действительно сложных задачах, а рутину — делегировать нейросети.

В этой статье я собрал 15 промтов, которые сам использую почти каждый день. Они покрывают все основные области: автоматизацию инфраструктуры, CI/CD, мониторинг и анализ логов. Каждый промт — это проверенный рецепт, который сэкономит вам часы работы и избавит от головной боли. Подготовьтесь к тому, что после прочтения вы захотите немедленно попробовать их в деле.

1. Генерация Terraform-кода для облачной инфраструктуры

Задача: Создать конфигурацию Terraform для развертывания виртуальной машины в AWS с заданными параметрами.

Промт:

«Ты — опытный DevOps-инженер. Сгенерируй Terraform-конфигурацию для развертывания EC2-инстанса типа t3.micro в AWS. Используй AMI Ubuntu 22.04. Добавь security group, разрешающий SSH (порт 22) и HTTP (порт 80) с любых IP. Включи тег Name со значением "my-app-server". Выведи public IP инстанса в output.»

Пример результата:

provider "aws" {
  region = "us-east-1"
}

resource "aws_security_group" "web_sg" {
  name        = "web_sg"
  description = "Allow SSH and HTTP"

  ingress {
    from_port   = 22
    to_port     = 22
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  ingress {
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

resource "aws_instance" "web" {
  ami           = "ami-053b0d53c279acc90" # Ubuntu 22.04 LTS
  instance_type = "t3.micro"
  vpc_security_group_ids = [aws_security_group.web_sg.id]

  tags = {
    Name = "my-app-server"
  }
}

output "public_ip" {
  value = aws_instance.web.public_ip
}

Почему это работает: AI понимает контекст cloud-провайдера и генерирует код, который соответствует синтаксису Terraform. Вы можете сразу использовать его в своих проектах, адаптировав под свои нужды.

2. Написание Dockerfile для многоэтапной сборки

Задача: Создать эффективный Dockerfile для Node.js приложения с многоэтапной сборкой.

Промт:

«Создай многоэтапный Dockerfile для Node.js приложения. Используй официальный образ node:20-alpine для сборки и node:20-alpine для продакшена. Скопируй только необходимые файлы, установи зависимости с помощью npm ci, собери приложение и удали dev-зависимости. Укажи порт 3000 и команду запуска.»

Пример результата:

# Stage 1: Build
FROM node:20-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

# Stage 2: Production
FROM node:20-alpine
WORKDIR /app
COPY --from=build /app/package*.json ./
RUN npm ci --omit=dev
COPY --from=build /app/dist ./dist
EXPOSE 3000
CMD ["node", "dist/server.js"]

Почему это работает: Многоэтапная сборка — это стандарт для создания компактных и безопасных образов. AI учитывает лучшие практики и генерирует Dockerfile, который легко поддерживать.

3. Создание Kubernetes-манифеста для деплоя

Задача: Сгенерировать Kubernetes Deployment и Service для веб-приложения.

Промт:

«Создай Kubernetes-манифесты для Deployment и Service для приложения my-app. Используй образ nginx:1.25, 3 реплики, стратегия обновления RollingUpdate. Service типа ClusterIP с портом 80. Добавь livenessProbe и readinessProbe через HTTP GET на /health.»

Пример результата:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 1
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: nginx:1.25
        ports:
        - containerPort: 80
        livenessProbe:
          httpGet:
            path: /health
            port: 80
          initialDelaySeconds: 5
          periodSeconds: 10
        readinessProbe:
          httpGet:
            path: /health
            port: 80
          initialDelaySeconds: 3
          periodSeconds: 5
---
apiVersion: v1
kind: Service
metadata:
  name: my-app
spec:
  selector:
    app: my-app
  ports:
  - port: 80
    targetPort: 80

Почему это работает: Kubernetes-манифесты имеют строгий синтаксис, и AI отлично с ним справляется. Промт задает четкие требования, которые нейросеть превращает в рабочие YAML-файлы.

4. Написание Ansible-плейбука для установки Nginx

Задача: Автоматизировать установку и настройку Nginx на удаленных серверах с помощью Ansible.

Промт:

«Напиши Ansible playbook для установки Nginx на Ubuntu 22.04. Установи пакет nginx, запусти и включи службу. Скопируй конфигурацию сайта из файла site.conf в /etc/nginx/sites-available/ и создай симлинк в sites-enabled. Проверь конфигурацию и перезагрузи Nginx.»

Пример результата:

---
- name: Install and configure Nginx
  hosts: all
  become: yes
  tasks:
    - name: Install nginx
      apt:
        name: nginx
        state: latest
        update_cache: yes

    - name: Start and enable nginx
      systemd:
        name: nginx
        state: started
        enabled: yes

    - name: Copy site configuration
      copy:
        src: site.conf
        dest: /etc/nginx/sites-available/site.conf

    - name: Create symlink in sites-enabled
      file:
        src: /etc/nginx/sites-available/site.conf
        dest: /etc/nginx/sites-enabled/site.conf
        state: link
      notify: restart nginx

  handlers:
    - name: restart nginx
      systemd:
        name: nginx
        state: restarted

Почему это работает: Ansible-плейбуки — это декларативное описание желаемого состояния системы. AI генерирует их на основе ваших слов, экономя время на изучении документации.

5. Скрипт Bash для автоматического бэкапа базы данных

Задача: Создать bash-скрипт для ежедневного резервного копирования PostgreSQL в S3-совместимое хранилище.

Промт:

«Напиши bash-скрипт для бэкапа PostgreSQL базы данных. Используй pg_dump. Сжимай бэкап с помощью gzip. Сохраняй в локальную папку /backups с датой в имени файла. Загрузи в S3 с помощью aws s3 cp. Удаляй локальные бэкапы старше 7 дней. Включи обработку ошибок (set -e) и логгирование.»

Пример результата:

#!/bin/bash
set -e

DB_NAME="mydb"
DB_USER="postgres"
BACKUP_DIR="/backups"
S3_BUCKET="s3://my-backup-bucket"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/$DB_NAME_$DATE.sql.gz"

mkdir -p $BACKUP_DIR

echo "Starting backup of $DB_NAME at $DATE"
pg_dump -U $DB_USER $DB_NAME | gzip > $BACKUP_FILE

echo "Uploading to S3"
aws s3 cp $BACKUP_FILE $S3_BUCKET/

echo "Removing old backups (older than 7 days)"
find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete

echo "Backup completed successfully"

Почему это работает: Скрипты — это рутина, которую AI пишет быстро и без ошибок. Вы получаете готовый к использованию скрипт с комментариями, который можно добавить в cron.

6. Анализ логов с помощью AI: поиск ошибок и паттернов

Задача: Проанализировать большой файл логов и выявить аномалии, ошибки и подозрительные паттерны.

Промт:

«Проанализируй следующий фрагмент лога приложения. Найди ошибки, исключения и подозрительные паттерны. Сгруппируй их по типу и предложи возможные причины. Если есть стектрейсы, выдели основную причину. Формат лога: [timestamp] [level] [service] message.»

Пример результата:

[2026-08-19T10:15:23Z] [ERROR] [auth-service] Failed to connect to database: connection refused
[2026-08-19T10:15:25Z] [WARN] [auth-service] Retrying connection in 2 seconds...
[2026-08-19T10:15:27Z] [ERROR] [auth-service] Connection pool exhausted
[2026-08-19T10:16:00Z] [INFO] [payment-service] Processing payment for order #12345
[2026-08-19T10:16:01Z] [ERROR] [payment-service] Payment gateway timeout
[2026-08-19T10:18:12Z] [ERROR] [payment-service] Invalid response from gateway: 504

AI-анализ:

  1. Ошибки подключения к БД в auth-service: Несколько ошибок подряд указывают на проблемы с доступностью базы данных или сети. Возможно, БД недоступна или превышено количество подключений.
  2. Ошибки payment-service: Таймаут платежного шлюза и невалидный ответ 504 — шлюз не отвечает. Это может быть связано с внешним сервисом.
  3. Рекомендации: Проверить статус БД, увеличить пул подключений, добавить ретраи с экспоненциальной задержкой для payment-service.

Почему это работает: AI обрабатывает логи как текст и находит закономерности, которые человек мог бы упустить. Вы экономите часы на ручном анализе.

7. Оптимизация CI/CD пайплайна: сокращение времени сборки

Задача: Улучшить существующий CI/CD пайплайн для ускорения сборки и деплоя.

Промт:

«Вот мой текущий CI/CD пайплайн в GitHub Actions. Он собирает Node.js приложение, запускает тесты и деплоит на AWS. Найдите узкие места и предложите оптимизации. Учтите кэширование зависимостей, параллелизацию задач и использование эффективных образов.»

Пример результата:

Текущий пайплайн:

name: CI/CD
on: [push, pull_request]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm install
      - run: npm test
      - run: npm run build
      - run: aws s3 sync build/ s3://my-bucket

Оптимизации:

  1. Кэширование npm dependencies: Добавить cache для npm, чтобы не загружать зависимости каждый раз.
  2. Параллелизация: Запускать тесты и сборку в отдельных jobs с параллельным выполнением.
  3. Использовать готовый образ Node: Вместо установки каждый раз.

Оптимизированный пайплайн:

name: CI/CD
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'
      - run: npm ci
      - run: npm test
  build:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'
      - run: npm ci
      - run: npm run build
      - uses: aws-actions/configure-aws-credentials@v4
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: us-east-1
      - run: aws s3 sync build/ s3://my-bucket

Почему это работает: AI предлагает конкретные улучшения на основе анализа кода и лучших практик CI/CD. Вы можете сразу применить их в своем проекте.

8. Поиск уязвимостей в Docker-образе

Задача: Проверить Docker-образ на наличие известных уязвимостей и получить рекомендации по исправлению.

Промт:

«Проверь Docker-образ node:20-alpine на наличие известных уязвимостей. Используй команду docker scan или trivy image. Выведи список уязвимостей с уровнем критичности и предложи способы их устранения.»

Пример результата:

$ trivy image node:20-alpine

node:20-alpine (alpine 3.18.0)
===================
Total: 3 (UNKNOWN: 0, LOW: 1, MEDIUM: 1, HIGH: 1, CRITICAL: 0)

+---------------+------------------+----------+-------------------+---------------+------------------------------------+

|    LIBRARY    | VULNERABILITY ID | SEVERITY | INSTALLED VERSION | FIXED VERSION |              TITLE                 |
+---------------+------------------+----------+-------------------+---------------+------------------------------------+

| libcrypto3    | CVE-2023-0464    | HIGH     | 3.0.8-r0          | 3.0.8-r1      | openssl: X.400 address memory corruption |
| libssl3       | CVE-2023-0464    | HIGH     | 3.0.8-r0          | 3.0.8-r1      | openssl: X.400 address memory corruption |
| zlib          | CVE-2023-45853  | MEDIUM   | 1.2.13-r0         | 1.2.13-r1     | zlib: integer overflow in deflateBound() |
+---------------+------------------+----------+-------------------+---------------+------------------------------------+

Рекомендации: Обновить образ до последней версии с патчами безопасности, например, node:20-alpine3.18.0 с обновлениями.

Почему это работает: AI не заменяет сканеры, но может интерпретировать их вывод и предложить конкретные действия. Это делает процесс безопасности более эффективным.

9. Генерация документации для API

Задача: Создать документацию OpenAPI для REST API.

Промт:

«Сгенерируй OpenAPI 3.0 спецификацию для REST API со следующими эндпоинтами: GET /users, POST /users, GET /users/{id}. Пользователь имеет поля: id, name, email. Добавь схемы, параметры и ответы. Используй формат YAML.»

Пример результата:

openapi: 3.0.0
info:
  title: Users API
  version: 1.0.0
paths:
  /users:
    get:
      summary: Get list of users
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'
    post:
      summary: Create a new user
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
      responses:
        '201':
          description: User created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
  /users/{id}:
    get:
      summary: Get user by ID
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
components:
  schemas:
    User:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        email:
          type: string

Почему это работает: Документация API — это скучная задача, которую AI выполняет за секунды. Вы получаете стандартную спецификацию, которую можно использовать в Swagger UI.

10. Написание Helm Chart для приложения

Задача: Создать Helm chart для деплоя приложения в Kubernetes.

Промт:

«Создай Helm chart для приложения my-app. Включи values.yaml с параметрами: replicaCount, image.repository, image.tag, service.type, service.port. Создай шаблоны deployment.yaml и service.yaml. Используй стандартную структуру chart.»

Пример результата:

Структура:

my-app-chart/
├── Chart.yaml
├── values.yaml
└── templates/
    ├── deployment.yaml
    └── service.yaml

Chart.yaml:

apiVersion: v2
name: my-app
version: 0.1.0

values.yaml:

replicaCount: 2
image:
  repository: nginx
  tag: latest
service:
  type: ClusterIP
  port: 80

templates/deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Chart.Name }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      app: {{ .Chart.Name }}
  template:
    metadata:
      labels:
        app: {{ .Chart.Name }}
    spec:
      containers:
      - name: {{ .Chart.Name }}
        image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
        ports:
        - containerPort: {{ .Values.service.port }}

templates/service.yaml:

apiVersion: v1
kind: Service
metadata:
  name: {{ .Chart.Name }}
spec:
  type: {{ .Values.service.type }}
  selector:
    app: {{ .Chart.Name }}
  ports:
  - port: {{ .Values.service.port }}
    targetPort: {{ .Values.service.port }}

Почему это работает: Helm — это стандарт де-факто для управления Kubernetes-приложениями. AI генерирует структуру chart, которую можно сразу использовать.

11. Мониторинг: PromQL-запросы для Prometheus

Задача: Написать PromQL-запросы для мониторинга CPU, памяти и ошибок приложения.

Промт:

«Напиши PromQL-запросы для Prometheus: 1) средняя загрузка CPU за 5 минут, 2) процент использования памяти, 3) количество 5xx ошибок за последний час, 4) время ответа приложения (гистограмма). Используй стандартные метрики node_exporter и приложения.»

Пример результата:

  1. Средняя загрузка CPU за 5 минут:
    rate(node_cpu_seconds_total{mode="user"}[5m])

  2. Процент использования памяти:
    (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100

  3. Количество 5xx ошибок за последний час:
    sum(rate(http_requests_total{status=~"5.."}[1h]))

  4. Время ответа приложения (гистограмма):
    histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))

Почему это работает: PromQL — мощный, но сложный язык. AI знает синтаксис и типовые метрики, поэтому вы получаете работающие запросы без изучения документации.

12. Автоматизация рутинных задач с помощью Python-скрипта

Задача: Написать Python-скрипт для проверки доступности серверов по списку и отправки уведомления в Slack при недоступности.

Промт:

«Напиши Python-скрипт, который читает список серверов из файла servers.txt (по одному на строку), пингует каждый (ICMP) и отправляет сообщение в Slack через webhook, если сервер недоступен. Используй библиотеку ping3. Добавь обработку ошибок и логирование.»

Пример результата:

import ping3
import requests
import logging

logging.basicConfig(level=logging.INFO)

SLACK_WEBHOOK_URL = "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX"

with open("servers.txt") as f:
    servers = [line.strip() for line in f if line.strip()]

for server in servers:
    try:
        response = ping3.ping(server, timeout=2)
        if response is None:
            logging.warning(f"Server {server} is down")
            requests.post(SLACK_WEBHOOK_URL, json={"text": f"Server {server} is down!"})
        else:
            logging.info(f"Server {server} is up (response: {response:.2f} ms)")
    except Exception as e:
        logging.error(f"Error pinging {server}: {e}")

Почему это работает: Скрипты на Python — идеальный кандидат для генерации AI. Вы получаете готовый инструмент мониторинга, который можно легко расширить.

13. Написание GitLab CI конфигурации

Задача: Создать .gitlab-ci.yml для проекта на Java с Maven и деплоем в Kubernetes.

Промт:

«Создай .gitlab-ci.yml для Java-проекта с Maven. Этапы: build, test, deploy. Используй образ maven:3.8-openjdk-17. На этапе build собери jar, на test запусти тесты, на deploy используй kubectl для деплоя в кластер. Добавь переменные окружения для доступа к кластеру.»

Пример результата:

stages:
  - build
  - test
  - deploy

variables:
  MAVEN_OPTS: "-Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository"

cache:
  paths:
    - .m2/repository

build:
  stage: build
  image: maven:3.8-openjdk-17
  script:
    - mvn clean compile
  artifacts:
    paths:
      - target/*.jar

test:
  stage: test
  image: maven:3.8-openjdk-17
  script:
    - mvn test

deploy:
  stage: deploy
  image: bitnami/kubectl:latest
  script:
    - kubectl apply -f deployment.yaml
  only:
    - main

Почему это работает: AI знает синтаксис GitLab CI и может сгенерировать конфигурацию, которая соответствует лучшим практикам.

14. Генерация SQL-запросов для анализа данных

Задача: Написать SQL-запрос для поиска аномалий в таблице логов.

Промт:

«Напиши SQL-запрос для PostgreSQL: найти IP-адреса, с которых было более 100 запросов за последний час. Таблица access_logs содержит поля: id, ip_address, request_time, status_code. Выведи ip_address и количество запросов, отсортированные по убыванию.»

Пример результата:

SELECT ip_address, COUNT(*) AS request_count
FROM access_logs
WHERE request_time >= NOW() - INTERVAL '1 hour'
GROUP BY ip_address
HAVING COUNT(*) > 100
ORDER BY request_count DESC;

Почему это работает: SQL — это язык, который AI отлично знает. Вы получаете точный запрос, который можно использовать для анализа логов или мониторинга.

15. Создание скрипта для ротации логов

Задача: Написать bash-скрипт для ротации логов в системе Linux.

Промт:

«Создай bash-скрипт для ротации логов: сжимай файлы логов старше 7 дней в .gz, удаляй .gz старше 30 дней, отправляй сигнал HUP процессу, чтобы он переоткрыл файлы. Логи находятся в /var/log/myapp/ и называются app.log.*.»

Пример результата:

#!/bin/bash
LOG_DIR="/var/log/myapp"
DAYS_TO_COMPRESS=7
DAYS_TO_DELETE=30

find $LOG_DIR -name "app.log.*" -type f -mtime +$DAYS_TO_COMPRESS -exec gzip {} \;
find $LOG_DIR -name "app.log.*.gz" -type f -mtime +$DAYS_TO_DELETE -delete
pkill -HUP myapp

Почему это работает: AI создает скрипт, который можно добавить в cron и забыть о проблемах с диском.

Бонус: промпт для промптов

Если вы не знаете, какой промпт использовать, попросите AI помочь:

«Ты — DevOps-эксперт. Предложи 10 промтов для генерации кода, которые сэкономят время на рутинных задачах. Опиши каждый промт и его применение.»

Этот мета-промпт позволяет получить новые идеи для автоматизации.

Выводы

AI — это не замена DevOps-инженеру, а мощный инструмент, который берет на себя рутину: генерацию кода, анализ логов, написание конфигураций. Используя эти 15 промтов, вы сможете сократить время на рутинные задачи на 30-50% и сосредоточиться на действительно сложных проблемах.

Попробуйте эти промты в своей работе. Адаптируйте их под свои задачи. И не забудьте проверить результат — AI иногда ошибается, но при правильном использовании это ваш лучший помощник.

Если у вас есть свои проверенные промты — делитесь в комментариях, я всегда рад узнать что-то новое.

← Все статьи

Комментарии