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

推荐订阅源

P
Proofpoint News Feed
Martin Fowler
Martin Fowler
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
C
Cisco Blogs
Last Week in AI
Last Week in AI
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
T
Tenable Blog
A
Arctic Wolf
小众软件
小众软件
Google DeepMind News
Google DeepMind News
aimingoo的专栏
aimingoo的专栏
PCI Perspectives
PCI Perspectives
博客园 - 司徒正美
The Last Watchdog
The Last Watchdog
H
Hacker News: Front Page
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Stack Overflow Blog
Stack Overflow Blog
N
News and Events Feed by Topic
Security Archives - TechRepublic
Security Archives - TechRepublic
博客园 - 【当耐特】
S
Security @ Cisco Blogs
P
Proofpoint News Feed
Cloudbric
Cloudbric
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Jina AI
Jina AI
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
月光博客
月光博客
Schneier on Security
Schneier on Security
Hacker News: Ask HN
Hacker News: Ask HN
V
Visual Studio Blog
D
DataBreaches.Net
H
Help Net Security
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Project Zero
Project Zero
阮一峰的网络日志
阮一峰的网络日志
Cyberwarzone
Cyberwarzone
博客园 - Franky
Y
Y Combinator Blog
Spread Privacy
Spread Privacy
N
News and Events Feed by Topic
The Cloudflare Blog
Simon Willison's Weblog
Simon Willison's Weblog
S
SegmentFault 最新的问题
W
WeLiveSecurity
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
I
Intezer
Hugging Face - Blog
Hugging Face - Blog
Attack and Defense Labs
Attack and Defense Labs

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

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет 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 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Terraform MCP Server 1.0: теперь AI пишет конфиги по свежим провайдерам — но в prod без поводка нельзя
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 — и на каких правах?