惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Jina AI
Jina AI
博客园 - 司徒正美
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
J
Java Code Geeks
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
爱范儿
爱范儿
美团技术团队
腾讯CDC
博客园 - Franky
MyScale Blog
MyScale Blog
人人都是产品经理
人人都是产品经理
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
aimingoo的专栏
aimingoo的专栏
博客园_首页
V
V2EX
Martin Fowler
Martin Fowler
T
The Blog of Author Tim Ferriss

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
Terraform MCP Server 1.0: теперь AI пишет конфиги по свеж...
Puma · 2026-06-16 · via Все публикации подряд на Хабре

5 мин

0

Любой, кто просил ChatGPT или Claude накидать конфиг Terraform, знает этот жанр: модель уверенно пишет HCL, который был актуален год назад. acl = "private" прямо внутри aws_s3_bucket, аргументы, которые провайдер депрекейтнул ещё в четвёртой мажорной версии, ссылки на ресурсы, переименованные пару релизов назад. Причина простая — у модели знания на момент обучения, а реестр провайдеров живёт своей жизнью и меняется каждую неделю.

11 июня 2026 HashiCorp (теперь уже под крылом IBM) перевела в GA свой ответ на эту боль — Terraform MCP Server 1.0. Это официальный MCP-сервер, который даёт AI-ассистенту прямой доступ к Terraform Registry: актуальная документация провайдеров, модули, политики — в момент запроса, а не из training data.

Разберём, что он реально умеет, как поднять стенд за пять минут и где категорически нельзя пускать агента к инфраструктуре без поводка.

Зачем вообще прокладка между LLM и реестром

MCP (Model Context Protocol) — открытый стандарт от Anthropic, по которому модель ходит во внешние инструменты. Тут теории достаточно: есть хост (Claude Desktop, Cursor, VS Code), есть MCP-клиент внутри него, и есть сервер, который отдаёт инструменты. Всё.

Важно другое — что именно сервер кладёт модели в контекст. Terraform MCP Server не «применяет Terraform за вас». Он отдаёт модели набор tools, которыми та сама пользуется, когда вы просите написать или поправить конфиг:

  • search_providers — найти провайдера в реестре;

  • get_provider_details — вытащить актуальную документацию по ресурсам и аргументам;

  • get_latest_provider_version — проверить свежую версию;

  • search_modules / get_module_details — модули с их inputs/outputs и примерами;

  • поиск Sentinel-политик для governance и compliance.

Инструменты сгруппированы в три toolset’а — registry, registry-private и terraform — и включаются/отключаются флагом --toolsets. Это удобно: для локальной разработки достаточно публичного registry, а terraform (операции над workspace в HCP/TFE) можно вообще не поднимать.

Без MCP против с MCP

Самый честный способ показать ценность — один и тот же промпт на свежий ресурс.

Классический пример — S3-бакет. Модель без доступа к реестру с большой вероятностью выдаст старый стиль:

# то, что напишет LLM по памяти — стиль, депрекейтнутый в AWS provider v4
resource "aws_s3_bucket" "data" {
  bucket = "my-data"
  acl    = "private"
  versioning {
    enabled = true
  }
}

Тут двойная беда. Во-первых, acl и versioning внутри aws_s3_bucket депрекейтнуты и вынесены в отдельные ресурсы ещё в четвёртой версии провайдера. Во-вторых, и это любят забывать: с 2023 года S3 по умолчанию отключает ACL (Bucket Owner Enforced), приватность — это и так дефолт, а отдельный aws_s3_bucket_acl с private на свежем бакете просто упадёт.

Модель, сходив через MCP в search_providers и get_provider_details за актуальной документацией, ACL для приватного бакета не пишет вообще. Корректный современный конфиг — без ACL-ресурса, с вынесенным версионированием и явным блоком публичного доступа:

resource "aws_s3_bucket" "data" {
  bucket = "my-data"
}

resource "aws_s3_bucket_versioning" "data" {
  bucket = aws_s3_bucket.data.id
  versioning_configuration {
    status = "Enabled"
  }
}

resource "aws_s3_bucket_public_access_block" "data" {
  bucket                  = aws_s3_bucket.data.id
  block_public_acls       = true
  block_public_policy     = true
  ignore_public_acls      = true
  restrict_public_buckets = true
}

Разница не в том, что модель «поумнела». Она перестала угадывать и сходила за фактами. Для редких провайдеров и свежих мажорных версий, где обучающих данных мало, эффект заметнее всего.

Стенд за пять минут

Сервер ездит в Docker-контейнере и поддерживает два транспорта: stdio (локально) и streamable-http (удалённо). Для публичного реестра токен не нужен вообще.

Локальный запуск под stdio:

docker run -i --rm hashicorp/terraform-mcp-server

Подключение в хост (пример для конфигов на базе MCP — Claude Desktop, Cursor, VS Code agent mode):

{
  "mcpServers": {
    "terraform": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "hashicorp/terraform-mcp-server"]
    }
  }
}

Всё — дальше модель сама находит и вызывает нужные tools, когда вы просите HCL.

HCP Terraform и Enterprise: приватный registry в контексте модели

Публичный реестр — это приятно, но настоящая ценность для команд в приватной части. Подключив TFE_TOKEN и TFE_ADDRESS, вы пробрасываете в контекст модели свой приватный registry: внутренние модули с их документацией, провайдеры, организации и workspace.

docker run -i --rm \
  -e TFE_ADDRESS=https://app.terraform.io \
  -e TFE_TOKEN=*** \
  hashicorp/terraform-mcp-server

В режиме HCP/TFE доступны операции над workspace, переменными, тегами и run’ами. И вот тут принципиальный момент: деструктивные операции по умолчанию выключены. Apply, destroy, auto-approve и часть run-операций спрятаны за флагом ENABLE_TF_OPERATIONS — по дефолту он false, и это правильный дефолт. Но не обманывайтесь: что агент в принципе может читать и менять, определяется правами самого TFE_TOKEN, а не только этим флагом. Так что least privilege на токене — не опция.

Безопасность: где поводок обязателен

HashiCorp в документации честно перечисляет модель угроз, и её стоит прочитать до того, как подключать сервер к боевому токену. Помимо обычных галлюцинаций, там: prompt injection, tool poisoning, rug pull (инструмент меняет поведение после доверия) и tool shadowing. То есть это не «безопасно by design», а инструмент, который надо ограничивать.

Практический чеклист, если не хочется однажды объяснять, почему агент снёс staging:

  • Минимальные права токена. TFE_TOKEN должен видеть ровно то, что нужно ассистенту, и ничего сверх. Никакого «дам админский, потом разберусь».

  • ENABLE_TF_OPERATIONS=false, пока вы осознанно не решите иначе. Деструктивные операции — отдельный разговор и отдельный токен.

  • Не светить приватный registry в общий агент. Внутренние модули — это карта вашей инфраструктуры.

  • Никогда TFE_SKIP_TLS_VERIFY=true в проде.

  • Remote — только streamable-http с обвязкой: TLS (MCP_TLS_CERT_FILE / MCP_TLS_KEY_FILE), строгий CORS, IP allowlist, встроенные rate limit’ы (MCP_RATE_LIMIT_GLOBAL по умолчанию 10:20, MCP_RATE_LIMIT_SESSION5:10). Локально же хватает stdio или 127.0.0.1.

Отдельно про наблюдаемость: в streamable-http режиме сервер умеет отдавать OTel-метрики (OTEL_METRICS_ENABLED) — объём вызовов tools, latency, ошибки. Для прод-разворота это не опция, а гигиена.

Подводные камни

  • Контекст пухнет. Документация жирных провайдеров вроде AWS — это много токенов. Агент, который активно ходит в реестр, ест контекст и деньги быстрее, чем кажется.

  • Rate limit самого Registry. Зациклившийся в поиске агент упрётся в лимиты API реестра.

  • Привязка к экосистеме HashiCorp. Сервер официально заточен под Terraform Registry и HCP/TFE. OpenTofu как поддерживаемый сценарий не заявлен — хотя provider/module-документация из реестра по-прежнему полезна и для HCL-совместимых конфигов.

Итог

Terraform MCP Server не «отдаёт инфраструктуру ИИ» и не «лечит галлюцинации» — так формулировать неправильно. Он делает одну важную вещь: убирает устаревание контекста, чтобы модель писала HCL по актуальной схеме провайдера, а не по памяти годичной давности. Code review при этом никто не отменял.

Для девопса это редкий случай, когда AI-инструмент попадает ровно в рабочий процесс, а не в демо. Поднять стенд — пять минут и один docker run. Главное — держать агента на коротком поводке: минимальные права, выключенные по умолчанию деструктивные операции и threat model, прочитанная заранее, а не после инцидента.

А вы бы пустили агента в свой приватный registry — и на каких правах?