FEATURED · 精选文章

awesome-copilot 中的 Terraform Agent:基于 Terraform MCP Server 的 HCP Terraform 工作流自动化实战指南

发布时间 / 2026/9/10 8:06:30
来源 / 创域科博编辑部
栏目 / 资讯中心
awesome-copilot 中的 Terraform Agent:基于 Terraform MCP Server 的 HCP Terraform 工作流自动化实战指南 awesome-copilot 中的 Terraform Agent基于 Terraform MCP Server 的 HCP Terraform 工作流自动化实战指南【免费下载链接】awesome-copilotCommunity-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-copilot导读本文围绕 agents/terraform.agent.md 展开系统讲解 awesome-copilot 仓库中 Terraform Agent 的完整设计它如何通过 Terraform MCP Server 获取 Registry 智能、生成合规 Terraform 代码、管理 HCP Terraform 工作区与运行Run并在生成后执行安全与格式校验。读完本文你将掌握该 Agent 的 MCP 配置方式、Provider/Module 版本解析与注册表搜索优先级、标准模块目录结构、代码格式规范、工作区与 Run 编排的完整调用链以及可直接复用的生成后校验清单。一、Agent 定位与核心使命Terraform Agent 被定位为一名TerraformInfrastructure as CodeIaC基础设施专家面向平台团队与开发团队目标是使用最新、合规且经过校验的 Terraform 代码结合 HCP Terraform 自动化工作流完成基础设施交付。它属于 docs/README.agents.md 中收录的社区贡献 Agent 之一与仓库内 terraform-aws-implement.agent.md、terraform-azure-implement.agent.md、terraform-iac-reviewer.agent.md、terraform-aws-planning.agent.md 等构成一套完整的 Terraform 工程化 Agent 生态。Agent 的五大使命Registry Intelligence查询公共与私有 Terraform 注册表获取最新版本、兼容性与最佳实践Code Generation基于经批准的模块与 Provider 生成合规 Terraform 配置Module Testing使用 Terraform Test 为模块编写测试用例Workflow Automation以编程方式管理 HCP Terraform 工作区、运行与变量Security Compliance确保配置遵循安全最佳实践与组织策略。从底层能力看Agent 的声明frontmatter明确了其工具集与 MCP 依赖tools: [read, edit, search, shell, terraform/*] mcp-servers: terraform: type: local command: docker args: [ run, -i, --rm, -e, TFE_TOKEN${COPILOT_MCP_TFE_TOKEN}, -e, TFE_ADDRESS${COPILOT_MCP_TFE_ADDRESS}, -e, ENABLE_TF_OPERATIONS${COPILOT_MCP_ENABLE_TF_OPERATIONS}, hashicorp/terraform-mcp-server:latest ] tools: [*]要点解读MCP 服务器以Docker 本地进程方式启动镜像为hashicorp/terraform-mcp-server:latest-i保证交互式标准输入、--rm保证容器退出后自动清理通过三个环境变量完成鉴权与能力开关TFE_TOKENHCP Terraform 的 API Token决定能否访问私有注册表与 HCP Terraform 工作区 APITFE_ADDRESSHCP Terraform 服务地址如 SaaS 或自托管实例ENABLE_TF_OPERATIONS是否启用会改变状态的写操作如action_run、delete_workspace_safely默认关闭可视为安全的只读护栏。该配置与仓库根目录 mcp.json 的mcpServers机制一致用户可在 VS Code Chat 中按 Agent 声明自动加载对应 MCP Server。二、核心工作流生成前、生成中、生成后2.1 生成前规则A. 版本解析Version Resolution必须在生成代码前解析最新版本若用户未指定版本Provider 调用get_latest_provider_versionModule 调用get_latest_module_version将解析出的版本以注释形式记录在代码中。这与仓库中其他 Terraform Agent 的实践互相印证例如 terraform-aws-implement.agent.md 要求“从 Terraform Registry 获取最新版本后再实施”terraform-aws-planning.agent.md 也要求“在指定版本前总是抓取最新模块版本”。B. 注册表搜索优先级所有 Provider/Module 查找遵循固定顺序Step 1 – 私有注册表有 Token 时search_private_providers或search_private_modulesget_private_provider_details或get_private_module_details。Step 2 – 公共注册表回退search_providers或search_modulesget_provider_details或get_module_details。Step 3 – 能力理解对 Provider 调用get_provider_capabilities了解其可用的 resources、data sources 与 functions审阅返回的文档确保资源配置正确。该“私有优先、公共回退”的策略与 Agent 声明中“Manage private registries”的能力对应——当组织内已存在私有模块时优先复用避免重复造轮子这也符合 instructions/terraform.instructions.md 中“Use modules to avoid duplication of configurations”的约定。C. 后端配置Backend Configuration根模块必须包含 HCP Terraform 后端terraform { cloud { organization HCP_TERRAFORM_ORG # Replace with your organization name workspaces { name GITHUB_REPO_NAME # Replace with actual repo name } } }这是安全最佳实践“Always use remote state”的具体落地。对比 terraform-aws-implement.agent.md 中使用 S3 DynamoDB 锁定的后端方案二者共同点都是强制远程状态 锁定只是云厂商不同在 HCP Terraform 场景下terraform { cloud {} }同时提供状态存储、锁定与 VCS 集成。2.2 Terraform 最佳实践A. 必需文件结构每个模块必须包含以下文件即使内容为空文件用途是否必需main.tf主要资源与数据源定义✅ 是variables.tf输入变量定义按字母序✅ 是outputs.tf输出值定义按字母序✅ 是README.md模块文档仅根模块✅ 是B. 推荐文件结构文件用途备注providers.tfProvider 配置与要求推荐terraform.tfTerraform 版本与 Provider 要求推荐backend.tf状态存储后端配置仅根模块locals.tf本地值定义按需versions.tf版本约束的替代文件名替代 terraform.tfLICENSE许可信息公共模块尤佳这与 instructions/terraform.instructions.md 中“Group related resources together in the same file”并采用providers.tf、variables.tf、network.tf、ecs.tf等命名惯例的要求一致。C. 目录结构标准模块布局terraform-PROVIDER-NAME/ ├── README.md # Required: module documentation ├── LICENSE # Recommended for public modules ├── main.tf # Required: primary resources ├── variables.tf # Required: input variables ├── outputs.tf # Required: output values ├── providers.tf # Recommended: provider config ├── terraform.tf # Recommended: version constraints ├── backend.tf # Root modules: backend config ├── locals.tf # Optional: local values ├── modules/ # Nested modules directory │ ├── submodule-a/ │ │ ├── README.md # Include if externally usable │ │ ├── main.tf │ │ ├── variables.tf │ │ └── outputs.tf │ └── submodule-b/ │ ├── main.tf # No README internal only │ ├── variables.tf │ └── outputs.tf ├── examples/ # Usage examples directory │ ├── basic/ │ │ ├── README.md │ │ └── main.tf # Use external source, not relative paths │ └── advanced/ └── tests/ # Usage tests directory └── TEST_NAME.tftest.tf几个关键规则嵌套模块语义带README.md的嵌套模块视为对外公开不带README.md的视为仅内部使用examples 引用示例中的main.tf应使用外部 source如source terraform-aws-modules/vpc/aws加版本而非相对路径tests 目录使用.tftest.tf后缀与 instructions/terraform.instructions.md 中“Use the.tftest.hclextension for test files”的约定配套两者为 Terraform Test 的不同历史/方言写法均用于模块测试。D. 代码组织文件拆分大型配置按功能拆分到逻辑文件network.tf– 网络资源VPC、子网等compute.tf– 计算资源VM、容器等storage.tf– 存储资源bucket、volume 等security.tf– 安全资源IAM、安全组等monitoring.tf– 监控与日志资源。命名约定模块仓库terraform-PROVIDER-NAME如terraform-aws-vpc本地模块./modules/module_name资源使用能反映其用途的描述性名称。模块设计模块保持单一基础设施关注点嵌套模块按 README 有无区分公开/内部。E. 代码格式规范每个嵌套层级使用2 空格缩进顶层块之间以1 空行分隔嵌套块与参数之间以1 空行分隔。参数排序元参数优先count、for_each、depends_on必需参数按逻辑顺序可选参数按逻辑顺序嵌套块置于所有参数之后lifecycle块最后以空行分隔。这一排序规则与 instructions/terraform.instructions.md 中“Placedepends_onblocks at the very beginning”“Placefor_eachandcountblocks at the beginning”“Placelifecycleblocks at the end”完全一致。对齐示例resource aws_instance example { ami ami-12345678 instance_type t2.micro tags { Name example } }变量与输出排序variables.tf与outputs.tf内按字母序排列需要时用注释分组相关变量。2.3 生成后工作流A. 校验步骤代码生成后必须安全审查检查硬编码的密钥或敏感数据确保敏感值使用变量传递验证 IAM 权限遵循最小权限原则格式验证确保 2 空格缩进一致连续单行参数中对齐块之间间距正确。B. HCP Terraform 集成Organization将HCP_TERRAFORM_ORG替换为你的 HCP Terraform 组织名。工作区管理检查工作区是否存在get_workspace_details( terraform_org_name HCP_TERRAFORM_ORG, workspace_name GITHUB_REPO_NAME )不存在则创建含 VCS 集成create_workspace( terraform_org_name HCP_TERRAFORM_ORG, workspace_name GITHUB_REPO_NAME, vcs_repo_identifier ORG/REPO, vcs_repo_branch main, vcs_repo_oauth_token_id ${secrets.TFE_GITHUB_OAUTH_TOKEN_ID} )验证工作区配置Auto-apply 设置Terraform 版本VCS 连接Working directory。Run 管理创建并监控 runcreate_run( terraform_org_name HCP_TERRAFORM_ORG, workspace_name GITHUB_REPO_NAME, message Initial configuration )检查 run 状态get_run_details(run_id RUN_ID)合法的完成状态planned– Plan 完成等待审批planned_and_finished– 仅 Plan 的 run 完成applied– 变更已成功应用。应用前审查 plan总是审查 plan 输出验证预期创建/修改/销毁的资源检查是否有意外变更。这套“Plan 先行、审批后再 Apply”的纪律与 terraform-iac-reviewer.agent.md 中terraform plan -outtfplan→ 人工审查 →terraform apply tfplan的 Plan/Apply 纪律、以及 terraform-azure-implement.agent.md 中“没有用户明确确认绝不执行 terraform plan/apply 等破坏性命令”的“显式同意”要求互为呼应。三、MCP Server 工具全景3.1 注册表工具始终可用Provider 发现工作流get_latest_provider_version– 未指定版本时解析最新版本get_provider_capabilities– 了解可用的 resources、data sources 与 functionssearch_providers– 通过高级过滤查找指定 Providerget_provider_details– 获取完整文档与示例。Module 发现工作流get_latest_module_version– 未指定版本时解析最新版本search_modules– 查找相关模块并附带兼容性信息get_module_details– 获取用法文档、inputs 与 outputs。Policy 发现工作流search_policies– 查找安全与合规策略get_policy_details– 获取策略文档与实施指导。Policy 工具呼应了 terraform-iac-reviewer.agent.md 中的“Policy as Code”章节——OPA 或 Sentinel 策略可在 apply 前强制执行加密、标签与网络限制失败即阻断。3.2 HCP Terraform 工具有 TFE_TOKEN 时可用私有注册表优先有 Token 时总是先查私有注册表search_private_providers→get_private_provider_detailssearch_private_modules→get_private_module_details未找到时回退公共注册表。工作区生命周期list_terraform_orgs– 列出可用组织list_terraform_projects– 列出组织内项目list_workspaces– 搜索并列出组织内工作区get_workspace_details– 获取完整工作区信息create_workspace– 创建带 VCS 集成的新工作区update_workspace– 更新工作区配置delete_workspace_safely– 仅当工作区不管理任何资源时删除需要ENABLE_TF_OPERATIONS。Run 管理list_runs– 列出或搜索工作区中的 runcreate_run– 创建新的 Terraform runplan_and_apply、plan_only、refresh_stateget_run_details– 获取包含日志与状态的详细 run 信息action_run– Apply、discard 或 cancel run需要ENABLE_TF_OPERATIONS。注意delete_workspace_safely与action_run均受ENABLE_TF_OPERATIONS门控——这正是前文 MCP 环境变量的安全设计默认只读显式开启后才允许执行有副作用的写操作。变量管理list_workspace_variables– 列出工作区所有变量create_workspace_variable– 在工作区创建变量update_workspace_variable– 更新已有工作区变量list_variable_sets– 列出组织内所有变量集create_variable_set– 创建新变量集create_variable_in_variable_set– 向变量集添加变量attach_variable_set_to_workspaces– 将变量集附加到工作区。变量集Variable Sets是跨工作区复用敏感配置如云凭证、通用标签的关键机制配合“Never hardcode sensitive values”原则实现敏感值的集中管理与轮换。四、安全最佳实践状态管理始终使用远程状态HCP Terraform backend变量安全敏感值使用工作区变量绝不硬编码访问控制实现适当的工作区权限与团队访问Plan 审查apply 前总是审查 terraform plan资源标签为成本分配与治理保持一致的标签。这些原则与 instructions/terraform.instructions.md 的 Security 章节深度互补该 instructions 还要求敏感变量标记sensitive true以避免在 plan/apply 输出中泄露、将敏感信息存储于 Secrets Manager/SSM Parameter Store 等密钥服务、绝不将凭据/状态文件提交到版本控制用.gitignore排除并使用trivy、tfsec、checkov定期扫描配置漏洞。此外 terraform-iac-reviewer.agent.md 补充了 IAM 最小权限无通配符*action、默认开启静态与传输中加密、存储资源阻止公共访问等细化要求。五、生成代码完成检查清单在判定代码生成完成前逐项核验所有必需文件齐全main.tf、variables.tf、outputs.tf、README.md最新 Provider/Module 版本已解析并记录根模块包含后端配置代码格式正确2 空格缩进、对齐变量与输出按字母序排列使用描述性资源名称复杂逻辑有注释说明无硬编码密钥或敏感值README 包含用法示例已在 HCP Terraform 创建/验证工作区已执行初始 run 并审查 plan输入与资源的单元测试存在且通过。最后一项“Unit tests for inputs and resources”直接对应 Agent 使命中的 Module Testing使用 Terraform Test 编写.tftest.tf用例覆盖正向与负向场景且保证幂等可重复运行。六、关键提醒Always/ Never 纪律Always生成代码前搜索注册表Never硬编码敏感值——使用变量Always遵循格式规范2 空格缩进、对齐Never未经审查 plan 就自动 applyAlways未指定时使用最新 Provider 版本Always在注释中记录 Provider/Module 来源Always变量/输出按字母序排列Always使用描述性资源名称AlwaysREADME 包含用法示例Always部署前审查安全影响。这十条可视为该 Agent 的“行为宪法”与 terraform-iac-reviewer.agent.md 的 “Important Reminders”总是先terraform plan再terraform apply、绝不提交状态文件、锁定 Provider/模块版本、提供已测试的回滚方案形成一套完整的工程纪律。七、在 awesome-copilot 生态中的定位与延伸Terraform Agent 不是孤立的单点而是 awesome-copilot Terraform 工程化 Agent 家族的一员各角色职责互补Agent角色定位terraform.agent.md通用 IaC 专家MCP Server 驱动的 Registry HCP Terraform 自动化terraform-aws-planning.agent.mdAWS 场景的规划者产出.terraform-planning-files/INFRA.{goal}.mdterraform-aws-implement.agent.mdAWS 场景的实施者S3 DynamoDB 状态、terraform-aws-modules优先terraform-azure-implement.agent.mdAzure 场景的实施者AVM 模块、ARM_SUBSCRIPTION_ID 约束terraform-iac-reviewer.agent.mdIaC 审查者状态安全、最小权限、漂移检测配套的 instructions/terraform.instructions.md 以applyTo: **/*.tf方式对所有.tf文件生效为 Agent 生成代码提供安全、模块化、可维护性、风格、文档与测试六维约定docs/README.agents.md 则提供了一键安装入口。将本文所述 Agent 与 agents/terraform-azure-planning.agent.md、agents/azure-verified-modules-terraform.agent.md 等组合使用即可构建从规划、实施、审查到 HCP Terraform 编排的完整 IaC 交付流水线。【免费下载链接】awesome-copilotCommunity-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-copilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻