# Поддержка Terraform в Maguyva: инфраструктурный контекст для ИИ-агентов

Canonical source: https://maguyva.ai/ru/languages/terraform

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Maguyva поддерживает Terraform с разбором AST и извлечением символов, чтобы ИИ-агенты могли прослеживать модули, локальные переменные, переменные, ссылки на ресурсы и динамические инфраструктурные паттерны, прежде чем предлагать изменения.

## Сводка поддержки

- Уровень: Поддержка AST и символов
- Инфраструктура
- Расширения: .tf, .tfvars
- Настоящий AST-разбор для синтаксически осведомлённого поиска и структурного контекста.
- Именованные символы обеспечивают семантический поиск и перекрёстные ссылки. Навигация по графу доступна, когда включено извлечение связей.
- Этот язык индексируется для поиска, но сейчас не сохраняется в графе кода.
- Доступны и AST-разбор, и извлечение символов.

## Лучше всего подходит

- Платформенные команды, управляющие переиспользуемыми модулями Terraform, папками окружений и общими инфраструктурными паттернами.
- Репозитории, где изменения прикладного кода часто требуют соответствующих правок инфраструктуры или проверки влияния.
- Сценарии работы агентов, которым нужно понимать ссылки и радиус влияния, прежде чем трогать определения инфраструктуры.

## Сценарии работы агента

- Проследить, как связаны переменные, локальные переменные, модули и ресурсы, перед изменением плана.
- Сравнить варианты окружений и использование модулей, чтобы изменения оставались согласованными.
- Изучить вероятное влияние по цепочке, прежде чем агент предложит изменение инфраструктуры.

## Почему Terraform нужен контекст на уровне репозитория

Инфраструктурный код — это территория, где многие ИИ-инструменты незаметно скатываются к поверхностной работе с текстом. Этого недостаточно. Изменения в Terraform обычно требуют осторожности, затрагивают множество ссылок и разбросаны по модулям, локальным переменным, переменным, источникам данных и папкам конкретных окружений. Сложная часть — понять, как связаны части конфигурации, прежде чем её менять.

Поэтому поддержка Terraform важна, даже если ваш основной прикладной код живёт в другом месте. Если репозиторий содержит инфраструктурный код, агенту нужно видеть его как часть той же системы, а не как дополнение, о котором приходится гадать.

## Что Maguyva помогает агентам понять в Terraform

Maguyva поддерживает Terraform на структурном уровне, что даёт полезную основу для отслеживания ссылок на модули, потоков переменных и связей ресурсов. Это важно ещё больше, когда код использует `count`, `for_each`, динамические блоки и общие модули, из-за которых реальную форму плана труднее восстановить беглым просмотром.

Практическая польза в том, что агент может отвечать на вопросы уровня репозитория, такие как «где повторно используется этот модуль?», «что зависит от этой переменной?» или «какие папки окружений отклоняются от паттерна?» — прежде чем предложить изменение.

## Что это доказывает о языковом покрытии Maguyva

Terraform — хороший тест того, действительно ли полезно языковое покрытие. Он показывает, способен ли Maguyva относиться к прикладному коду, эксплуатационному коду и инфраструктуре как к единой задаче уровня репозитория, а не как к отдельным островам.

Если ваша инфраструктура соседствует с сервисным кодом, [руководство по Go](/ru/languages/go) — ближайшая бэкенд-пара. Если тот же репозиторий включает веб- или платформенные пакеты, [руководство по TypeScript](/ru/languages/typescript) — подходящая соседняя страница.

## Когда эта страница полезна

Используйте эту страницу, если вопрос звучит так: «может ли агент удерживать ещё и инфраструктурный контекст?» Это более реалистичный вопрос, чем спрашивать только о языках приложения. Для полной матрицы поддержки используйте [совместимость](/ru/docs/compatibility).

## Детали движка

- Нормализация импортов убирает `module` и `source`, что упрощает сравнение ссылок на уровне модулей.
- Правила языка Terraform распознают ссылки на `var`, `local`, `module`, `data` и ресурсы для извлечения связей, но текущая политика графа не сохраняет их в графе кода Maguyva.
- Специфичный для Terraform поток управления, такой как `count`, `for_each` и dynamic-блоки, считается полноценной структурой, а не простым текстом.

## Полезные точки входа MCP

- `get_task_context`: Используйте его для запросов вроде «отследи, как вывод модуля VPC попадает в сервис ECS», когда нужно быстро получить ответ, объединяющий найденный контекст.
- `text_pattern_search`: Используйте точный текст для адресов ресурсов, имён модулей или ключей переменных, прежде чем расширять анализ.
