Vibe Codex в DevOps: Terraform, Kubernetes, CI/CD
Инфраструктура — это код, в котором копипаста стоит дороже, чем в любом другом репозитории. Поэтому она же — лучший заказчик AI-ассистента.
DevOps-инженер тратит десятки часов на ритуальные перестановки: одинаковые модули Terraform, одинаковые манифесты Kubernetes, одинаковые секции CI. Vibe Codex здесь работает не как «генератор кода», а как живой шаблонизатор, который помнит контекст вашего кластера.
Terraform: модуль за один проход
Допустим, нужен модуль для S3-совместимого бакета с lifecycle-правилами и доступом для приложения через IAM. Один промпт — пять файлов.
$ vibe-codex "terraform-модуль storage-bucket для Yandex Cloud, \
входы: name, lifecycle_days, app_iam_role, \
выходы: bucket_name, endpoint"
[plan] 5 files:
+ modules/storage-bucket/main.tf
+ modules/storage-bucket/variables.tf
+ modules/storage-bucket/outputs.tf
+ modules/storage-bucket/versions.tf
+ modules/storage-bucket/README.md
# modules/storage-bucket/main.tf
resource "yandex_storage_bucket" "this" {
bucket = var.name
acl = "private"
force_destroy = false
lifecycle_rule {
id = "expire-old"
enabled = true
expiration {
days = var.lifecycle_days
}
}
versioning { enabled = true }
}
resource "yandex_iam_service_account_static_access_key" "this" {
service_account_id = var.app_iam_role
description = "${var.name} app key"
}
Модель прочитала versions.tf в корне, увидела провайдера Yandex и не подсунула AWS-ресурсы. Если бы был AWS — был бы aws_s3_bucket.
Kubernetes: манифест, который пройдёт ревью
Большая часть «AI-сгенерированных» k8s-манифестов падает на ревью: нет probes, нет resources, нет SecurityContext. Vibe Codex не позволяет себе таких пропусков, потому что обучен на инвариантах продакшен-кластеров.
$ vibe-codex "deployment payments-api, \
image cr.yandex/.../payments-api, \
porte 8080, env из ConfigMap payments-config, \
лимиты 500m/512Mi, probes /actuator/health"
apiVersion: apps/v1
kind: Deployment
metadata: { name: payments-api }
spec:
replicas: 3
strategy:
type: RollingUpdate
rollingUpdate: { maxSurge: 1, maxUnavailable: 0 }
selector: { matchLabels: { app: payments-api } }
template:
metadata: { labels: { app: payments-api } }
spec:
containers:
- name: app
image: cr.yandex/crp.../payments-api:0.1.0
ports: [{ containerPort: 8080 }]
envFrom: [{ configMapRef: { name: payments-config } }]
resources:
requests: { cpu: 100m, memory: 256Mi }
limits: { cpu: 500m, memory: 512Mi }
livenessProbe:
httpGet: { path: /actuator/health/liveness, port: 8080 }
initialDelaySeconds: 30
readinessProbe:
httpGet: { path: /actuator/health/readiness, port: 8080 }
securityContext:
runAsNonRoot: true
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
CI: GitHub Actions без полотен
Самое скучное место в CI — повторяющиеся секции «checkout — setup-X — cache». Vibe Codex генерирует composite actions для них и собирает основной workflow из вызовов.
$ vibe-codex "GitHub Actions workflow: \
lint (golangci-lint), test (go test -race), \
build (Docker), push в cr.yandex"
name: ci
on: { push: { branches: [main] }, pull_request: {} }
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-go
- run: golangci-lint run --timeout=5m
test:
runs-on: ubuntu-latest
needs: lint
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-go
- run: go test -race -coverprofile=cover.out ./...
build:
runs-on: ubuntu-latest
needs: test
if: github.ref == 'refs/heads/main'
permissions: { id-token: write, contents: read }
steps:
- uses: actions/checkout@v4
- uses: docker/setup-buildx-action@v3
- uses: ./.github/actions/yc-login
- uses: docker/build-push-action@v6
with:
push: true
tags: cr.yandex/${{ vars.YC_REGISTRY }}/payments-api:${{ github.sha }}
«Хороший YAML — это YAML, который вы не написали руками, но всё равно можете прочитать через год».
Helm-чарты и Helmfile
Чарты Vibe Codex генерирует с _helpers.tpl, корректным values.schema.json и комментариями к каждой опции в values.yaml. Если у вас Helmfile — соберёт и его, с указанием окружений.
Что инструмент НЕ делает
- Не применяет
terraform apply. Толькоplan, и только когда явно попросили. - Не пушит в registry. Команды на push в скрипте, но не запускаются автоматически.
- Не лезет в production-кластеры. Контекст kubectl читает в read-only режиме.
- Не хардкодит секреты. Использует
data.aws_secretsmanager,lockbox, или Vault.
Один паттерн, который окупает всё
Когда меняется один сервис, повторяющие правки в Helm-чартах, CI и Terraform делает vibe-codex sync. Он находит все места, где сервис упомянут (chart, ingress, secrets, monitoring rule), и предлагает diff одной кучей.
$ vibe-codex sync --service payments-api --version 0.2.0
[scan] found 7 references:
- charts/payments-api/Chart.yaml (appVersion)
- charts/payments-api/values-prod.yaml (image.tag)
- charts/umbrella/Chart.lock (dependency version)
- terraform/prod/k8s.tf (helm_release.version)
- .github/workflows/release.yml (matrix entry)
- monitoring/alerts/payments.yaml (label selector)
- README.md (version badge)
Инфраструктура любит постоянство. Vibe Codex — инструмент, который превращает «потому что так всегда делали» в исполняемый код, без потери смысла.
Готов попробовать?
brew tap xrouter-chat/tap && brew install vibe-codex — и за 30 секунд ты в деле.
Поставить Vibe Codex →