Terraform模块

提供可重用的Terraform模块,采用JSON块配置模型和MCP/AI友好的模式,简化Azure资源管理。

  • by hvaandres
  • Shell
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 hvaandres/terra-mcp-ready

使用说明

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/<org>/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工具可以:

  1. 发现 扫描可用模块 modules/*/schema.json
  2. 阅读 了解必填/可选字段和默认值的模式
  3. 生成 有效的 terraform.tfvars 不解析HCL的块
  4. 验证 用户输入之前 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, < 2.0)和供应商(azurerm ~> 4.0).
  • 对可变形状的破坏性更改需要一个主要的版本碰撞。

需求

工具 版本
地形 >=1.5
Azure CLI 最新版本
azure rm提供程序 ~>4.0

快速启动

# Clone and try the example
git clone https://github.com/<org>/terra-mcp-ready.git
cd terra-mcp-ready/examples/resource_groups

# Login to Azure
az login

# Init and plan
terraform init
terraform plan