terra mcp准备就绪
适用于Azure的可重用Terraform模块 JSON块配置模型 和 MCP/AI友好模式.
这个想法
传统的Terraform消费需要管理分布在多个平台上的数十个单个变量 .tfvars 文件夹。此回购翻转了以下内容: 一 terraform.tfvars 文件,每个资源一个块.
# This is all a consumer writes — no variables to learn, no files to manage
resource_groups = {
rg-networking-dev = {
location = "eastus2"
tags = { Environment = "dev", Team = "platform" }
}
rg-app-prod = {
location = "westus2"
lock = true
}
}每个模块接受一个 map(object({...})) 哪里 map键是资源名称 并且该对象包含配置。合理的默认值意味着您只指定需要的内容。
如何消费(来自另一个回购)
module "resource_groups" {
source = "git::https://github.com//terra-mcp-ready.git//modules/resource_group?ref=v1.0.0"
resource_groups = var.resource_groups
}然后定义你的 terraform.tfvars 用你需要的积木。就这样
MCP/AI集成
每个模块都有一个 schema.json (JSON模式草案-07)以机器可读格式描述其输入合约。MCP服务器和AI工具可以:
- 发现 扫描可用模块
modules/*/schema.json - 阅读 了解必填/可选字段和默认值的模式
- 生成 有效的
terraform.tfvars不解析HCL的块 - 验证 用户输入之前
terraform plan
看 schemas/README.md 为了整个大会。
模块目录
| 模块 | 描述 | 状态 |
|---|---|---|
resource_group | 具有可选锁的Azure资源组 | ✅ 可用 |
存储库结构
terra-mcp-ready/
├── modules/
│ └── resource_group/ # Each module is self-contained
│ ├── main.tf
│ ├── variables.tf # Single map(object) input
│ ├── outputs.tf # Standardized map output
│ ├── versions.tf
│ ├── schema.json # Machine-readable contract
│ └── README.md
├── examples/
│ └── resource_groups/ # Runnable example with sample tfvars
├── schemas/
│ └── README.md # Schema authoring convention
└── README.md设计原则
- 地图输入/地图输出 --每个模块都接受一个映射,并返回一个由相同键键键控的映射。
- 密钥=名称 --映射键是Azure资源名称。没有单独
name现场。 - 各地违约 --只有真正需要的字段(如
location)是强制性的。 - 架构优先 —
schema.json这是一个一流的交付成果,而不是事后的想法。 - 版本化 --消费者固定在git标签上(
?ref=v1.0.0).重大更改会影响主要版本。
版本控制
- 通过git标签进行语义版本控制:
v1.0.0,v1.1.0等等。 - 消费者将模块源引用固定到特定标记。
versions.tf在每个模块中约束Terraform(>= 1.5, 4.0).- 对可变形状的破坏性更改需要一个主要的版本碰撞。
需求
| 工具 | 版本 |
|---|---|
| 地形 | >=1.5 |
| Azure CLI | 最新版本 |
| azure rm提供程序 | ~>4.0 |
快速启动
# Clone and try the example
git clone https://github.com//terra-mcp-ready.git
cd terra-mcp-ready/examples/resource_groups
# Login to Azure
az login
# Init and plan
terraform init
terraform plan