# Hỗ trợ Terraform trong Maguyva: Ngữ cảnh hạ tầng cho AI agent

Canonical source: https://maguyva.ai/vi/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 hỗ trợ Terraform với phân tích cú pháp AST và trích xuất symbol, giúp AI agent theo dõi module, local, biến, tham chiếu resource, và các mẫu hạ tầng động trước khi đề xuất thay đổi.

## Tổng quan hỗ trợ

- Cấp độ: Hỗ trợ AST và symbol
- Hạ tầng
- Phần mở rộng: .tf, .tfvars
- Phân tích AST thật cho tìm kiếm nhận biết cú pháp và context cấu trúc.
- Các symbol có tên cung cấp dữ liệu cho tra cứu ngữ nghĩa và tham chiếu chéo. Điều hướng đồ thị khả dụng khi bật trích xuất quan hệ.
- Ngôn ngữ này được index để tìm kiếm, nhưng hiện chưa được lưu bền vững vào đồ thị code.
- Cả phân tích AST và trích xuất symbol đều khả dụng.

## Phù hợp nhất

- Các đội nền tảng quản lý module Terraform có thể tái sử dụng, thư mục môi trường, và các mẫu hạ tầng dùng chung.
- Các repo nơi thay đổi mã ứng dụng thường yêu cầu chỉnh sửa hạ tầng tương ứng hoặc rà soát tác động.
- Các quy trình agent cần hiểu các tham chiếu và phạm vi ảnh hưởng trước khi động đến các định nghĩa hạ tầng.

## Workflow agent

- Theo dõi cách biến, local, module, và resource kết nối với nhau trước khi chỉnh sửa một plan.
- So sánh các biến thể môi trường và cách sử dụng module để giữ thay đổi nhất quán.
- Kiểm tra tác động xuôi dòng có khả năng xảy ra trước khi agent đề xuất một thay đổi hạ tầng.

## Vì sao Terraform cần ngữ cảnh cấp repo

Mã hạ tầng là nơi rất nhiều công cụ AI âm thầm quay về xử lý văn bản hời hợt. Điều đó không đủ tốt. Các thay đổi Terraform thường nhạy cảm, nặng về tham chiếu, và trải rộng qua module, local, biến, nguồn dữ liệu, và các thư mục theo môi trường cụ thể. Phần khó là hiểu cách cấu hình gắn kết với nhau trước khi thay đổi nó.

Đó là lý do việc hỗ trợ Terraform quan trọng ngay cả khi mã ứng dụng chính của bạn nằm ở nơi khác. Nếu repo chứa mã hạ tầng, agent cần xem nó như một phần của cùng một hệ thống, chứ không phải một phần đính kèm mà nó nên đoán mò.

## Maguyva giúp agent hiểu gì trong Terraform

Maguyva hỗ trợ Terraform về mặt cấu trúc, đây là nền tảng hữu ích để theo dõi các tham chiếu module, luồng biến, và quan hệ resource. Điều đó càng quan trọng hơn khi mã sử dụng `count`, `for_each`, khối động (dynamic block), và các module dùng chung khiến hình dạng plan thực sự khó khôi phục hơn chỉ bằng cách lướt qua nhanh.

Lợi ích thực tế là agent có thể trả lời các câu hỏi ở cấp repo như "module này được tái sử dụng ở đâu?", "cái gì phụ thuộc vào biến này?", hoặc "thư mục môi trường nào đi chệch khỏi mẫu chung?" trước khi nó đề xuất một thay đổi.

## Điều này chứng minh gì về độ phủ ngôn ngữ của Maguyva

Terraform là một phép thử tốt cho việc liệu độ phủ ngôn ngữ có thực sự hữu ích hay không. Nó cho thấy liệu Maguyva có thể xem mã ứng dụng, mã vận hành, và hạ tầng như một vấn đề duy nhất ở cấp repo thay vì những hòn đảo tách biệt hay không.

Nếu hạ tầng của bạn nằm cạnh mã service, [hướng dẫn Go](/vi/languages/go) là cặp đôi backend gần nhất. Nếu cùng một repo bao gồm các package web hoặc nền tảng, [hướng dẫn TypeScript](/vi/languages/typescript) là trang liền kề phù hợp.

## Khi nào trang này hữu ích

Hãy dùng trang này nếu câu hỏi là "agent có thể giữ được cả ngữ cảnh hạ tầng không?" Đó là một câu hỏi thực tế hơn là chỉ hỏi về các ngôn ngữ ứng dụng. Để xem bảng ma trận hỗ trợ đầy đủ, hãy dùng [khả năng tương thích](/vi/docs/compatibility).

## Chi tiết engine

- Chuẩn hóa import loại bỏ `module` và `source`, giúp các tham chiếu cấp module dễ so sánh hơn.
- Các quy tắc ngôn ngữ của Terraform nhận diện tham chiếu `var`, `local`, `module`, `data` và resource để trích xuất quan hệ, nhưng chính sách đồ thị hiện tại không lưu bền vững chúng vào đồ thị code của Maguyva.
- Luồng điều khiển đặc thù của Terraform như `count`, `for_each`, và các khối dynamic được coi là cấu trúc hạng nhất thay vì văn bản thuần.

## Điểm khởi đầu MCP hữu ích

- `get_task_context`: Dùng nó cho các prompt như “truy vết cách output của module VPC cấp dữ liệu cho service ECS” khi bạn cần một câu trả lời tổng hợp ngữ cảnh nhanh chóng.
- `text_pattern_search`: Dùng văn bản chính xác cho địa chỉ resource, tên module, hay key biến trước khi mở rộng phân tích.
