Вы когда-нибудь тратили полдня на написание 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-анализ:
- Ошибки подключения к БД в auth-service: Несколько ошибок подряд указывают на проблемы с доступностью базы данных или сети. Возможно, БД недоступна или превышено количество подключений.
- Ошибки payment-service: Таймаут платежного шлюза и невалидный ответ 504 — шлюз не отвечает. Это может быть связано с внешним сервисом.
- Рекомендации: Проверить статус БД, увеличить пул подключений, добавить ретраи с экспоненциальной задержкой для 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
Оптимизации:
- Кэширование npm dependencies: Добавить cache для npm, чтобы не загружать зависимости каждый раз.
- Параллелизация: Запускать тесты и сборку в отдельных jobs с параллельным выполнением.
- Использовать готовый образ 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 и приложения.»
Пример результата:
-
Средняя загрузка CPU за 5 минут:
rate(node_cpu_seconds_total{mode="user"}[5m]) -
Процент использования памяти:
(1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 -
Количество 5xx ошибок за последний час:
sum(rate(http_requests_total{status=~"5.."}[1h])) -
Время ответа приложения (гистограмма):
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 иногда ошибается, но при правильном использовании это ваш лучший помощник.
Если у вас есть свои проверенные промты — делитесь в комментариях, я всегда рад узнать что-то новое.
Комментарии