Разработка AI-системы генерации Infrastructure-as-Code (Terraform, Ansible)

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Разработка AI-системы генерации Infrastructure-as-Code (Terraform, Ansible)
Средняя
~5 рабочих дней
Часто задаваемые вопросы
Направления AI-разработки
Этапы разработки AI-решения
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1218
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    853
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1047
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    825

Разработка AI-системы генерации Infrastructure as Code

AI-генерация IaC — автоматическое создание Terraform, Ansible, Kubernetes manifests на основе текстового описания инфраструктуры. Снижает порог входа в IaC и ускоряет создание типовых конфигураций.

Генерация Terraform

def generate_terraform(description: str, cloud: str = "aws") -> str:
    prompt = f"""Сгенерируй Terraform конфигурацию для {cloud}.

Описание: {description}

Требования:
- Используй последние stable provider версии
- variables.tf для всех параметров
- outputs.tf для ключевых ресурсов
- Теги для всех ресурсов
- Комментарии к нетривиальным блокам
- Backend S3 + DynamoDB для state locking"""

    terraform_code = llm.generate(prompt, max_tokens=3000)
    return terraform_code

# Пример: "Создай ECS кластер с ALB, 2-4 инстанции Fargate, RDS PostgreSQL"
# Результат: полный Terraform модуль с VPC, ECS, ALB, RDS, security groups, IAM

Валидация сгенерированного IaC

import subprocess

def validate_terraform(tf_dir: str) -> ValidationResult:
    # terraform fmt
    fmt_result = subprocess.run(["terraform", "fmt", "-check", tf_dir],
                                capture_output=True, text=True)

    # terraform validate
    init_result = subprocess.run(["terraform", "init", "-backend=false", tf_dir],
                                 capture_output=True, text=True)
    validate_result = subprocess.run(["terraform", "validate", tf_dir],
                                     capture_output=True, text=True)

    # tflint — дополнительные проверки
    tflint_result = subprocess.run(["tflint", "--format=json", tf_dir],
                                   capture_output=True, text=True)

    # checkov — security checks
    checkov_result = subprocess.run(
        ["checkov", "-d", tf_dir, "--framework", "terraform", "-o", "json"],
        capture_output=True, text=True
    )

    return ValidationResult(
        fmt_ok=fmt_result.returncode == 0,
        valid=validate_result.returncode == 0,
        validation_errors=validate_result.stderr,
        security_issues=json.loads(checkov_result.stdout).get("results", {}).get("failed_checks", []),
    )

Генерация Kubernetes манифестов

def generate_k8s_manifests(app_config: AppConfig) -> dict[str, str]:
    prompt = f"""Сгенерируй Kubernetes манифесты для деплоя приложения.

Приложение: {app_config.name}
Image: {app_config.image}
Порт: {app_config.port}
Реплики: {app_config.replicas}
CPU: {app_config.cpu_request}/{app_config.cpu_limit}
Memory: {app_config.memory_request}/{app_config.memory_limit}
Environment vars: {app_config.env_vars}
Needs: {app_config.needs}  # "database", "redis", "ingress"

Создай: Deployment, Service, HPA, ConfigMap, PodDisruptionBudget, NetworkPolicy."""

    return parse_k8s_yaml(llm.generate(prompt, max_tokens=4000))

Drift detection

После применения IaC — регулярная проверка дрейфа: фактическая инфраструктура vs конфигурация в коде. terraform plan в dry-run режиме. Если есть расхождения — алерт и автоматический PR с предлагаемым исправлением.

Подводные камни AI-генерации IaC

  • Устаревший синтаксис: LLM обучен на старых версиях Terraform, использует deprecated ресурсы. Решение: явно указывать target версию провайдера в промпте + валидация.
  • Security anti-patterns: открытые security groups, отсутствие encryption at rest. Решение: checkov после генерации + security-focused постинструкция.
  • Hardcoded credentials: LLM иногда вставляет placeholder вида access_key = "AKIAXXXXXXX". Решение: grep по паттернам credentials перед PR.