Розробка 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.webp
    Розробка сайту компанії B2B ADVANCE
    1288
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    902
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1123
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    860

Розробка 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. Рішення: чеков після генерації + охорона-фокусована постінструкція.
  • Hardcoded credentials: LLM іноді вставляє placeholder виду access_key = "AKIAXXXXXXX". Рішення: grep за патернами credentials перед PR.