/ 目录 / 演练场 / terraform-skill
● 社区 antonbabenko ⚡ 即开即用

terraform-skill

作者 antonbabenko · antonbabenko/terraform-skill

由 Anton Babenko 维护 — Terraform 和 OpenTofu 模式来自 terraform-best-practices.com 和 terraform-aws-modules,包含何时以及为什么要这样做的决策框架。

一个用于 Terraform/OpenTofu 工作的 Claude agent skill。教授 Claude 如何在原生 Terraform tests(1.6+)和 Terratest 之间进行选择、按照 terraform-aws-modules 的方式组织模块、配置 GitHub Actions / GitLab CI 并集成成本估算和安全扫描、以及应用生产级别的模式。不仅解释'是什么',还解释'何时以及为什么'。

为什么要用

核心特性

实时演示

实际使用效果

terraform-skill.replay ▶ 就绪
0/0

安装

选择你的客户端

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "terraform-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/antonbabenko/terraform-skill",
        "~/.claude/skills/terraform-skill"
      ],
      "_inferred": true
    }
  }
}

打开 Claude Desktop → Settings → Developer → Edit Config。保存后重启应用。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "terraform-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/antonbabenko/terraform-skill",
        "~/.claude/skills/terraform-skill"
      ],
      "_inferred": true
    }
  }
}

Cursor 使用与 Claude Desktop 相同的 mcpServers 格式。项目级配置优先于全局。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "terraform-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/antonbabenko/terraform-skill",
        "~/.claude/skills/terraform-skill"
      ],
      "_inferred": true
    }
  }
}

点击 Cline 侧栏中的 MCP Servers 图标,然后选 "Edit Configuration"。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "terraform-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/antonbabenko/terraform-skill",
        "~/.claude/skills/terraform-skill"
      ],
      "_inferred": true
    }
  }
}

格式与 Claude Desktop 相同。重启 Windsurf 生效。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "terraform-skill",
      "command": "git",
      "args": [
        "clone",
        "https://github.com/antonbabenko/terraform-skill",
        "~/.claude/skills/terraform-skill"
      ]
    }
  ]
}

Continue 使用服务器对象数组,而非映射。

~/.config/zed/settings.json
{
  "context_servers": {
    "terraform-skill": {
      "command": {
        "path": "git",
        "args": [
          "clone",
          "https://github.com/antonbabenko/terraform-skill",
          "~/.claude/skills/terraform-skill"
        ]
      }
    }
  }
}

加入 context_servers。Zed 保存后热重载。

claude mcp add terraform-skill -- git clone https://github.com/antonbabenko/terraform-skill ~/.claude/skills/terraform-skill

一行命令搞定。用 claude mcp list 验证,claude mcp remove 卸载。

使用场景

实战用法: terraform-skill

按习惯方式搭建新的 Terraform 模块

👤 发布可复用模块的平台工程师 ⏱ ~45 min intermediate

何时使用: 你正在分离出一个供内部或公开复用的模块,并希望结构一次就正确。

步骤
  1. 说明模块的目的
    使用 terraform-skill。为 AWS ECS 服务搭建一个模块,可选集成 ALB 和 CloudWatch 告警。✓ 已复制
    → 结构遵循 terraform-aws-modules 约定 — main.tf, variables.tf, outputs.tf, versions.tf, README.md, examples/
  2. 添加测试
    推荐测试方案 — 原生 tests 还是 Terratest?应用决策框架。✓ 已复制
    → 经过推理的选择和搭建的测试文件

结果: 一个能在第一个 PR 上通过审查的模块。

注意事项
  • 版本管理过于宽松(~> vs 指定版本) — Skill 默认为 required_providers 锁定次版本
搭配使用: github

为现有 Terraform 仓库添加强化的 CI 流水线

👤 DevOps / 平台工程师 ⏱ ~40 min advanced

何时使用: 你的仓库缺少 plan-on-PR、成本检查或安全扫描。

前置条件
  • GitHub 或 GitLab 托管 — 对应各自的流水线模板
步骤
  1. 请求流水线
    使用 terraform-skill。为 plan-on-PR、Infracost、tfsec 和 main 分支的受控 apply 添加 GitHub Actions。✓ 已复制
    → 包含并发控制、OIDC 认证、状态检查的工作流文件
  2. 调整安全策略
    哪些 Checkov / tfsec 规则应该导致失败,哪些应该警告?✓ 已复制
    → 带有理由的意见列表

结果: 一个能阻止风险变更而不影响效率的流水线。

注意事项
  • 流水线使用长期有效的 AWS 密钥 — Skill 倾向于使用 OIDC/角色假设,而非静态密钥
搭配使用: github

设计多环境布局而不导致状态爆炸

👤 从 dev/prod 扩展到 dev/staging/prod/per-tenant 的团队 ⏱ ~60 min advanced

何时使用: 你感受到了复制粘贴环境文件夹或单体状态文件的痛点。

步骤
  1. 描述环境
    使用 terraform-skill。我们需要 dev/staging/prod 加上每个租户的环境。什么布局能够扩展?✓ 已复制
    → 包含权衡的建议(workspaces vs 目录 vs Terragrunt)
  2. 规划迁移
    我们目前使用单个状态文件。草拟迁移方案。✓ 已复制
    → 带有风险说明的状态移动计划

结果: 一个你能在 ADR(架构决策记录)中辩护的布局。

注意事项
  • 在没有 imports/breakdowns 的情况下移动状态会导致资源销毁 — Skill 坚持使用 terraform state mv / import 步骤,而非删除并重新创建

组合

与其他 MCP 搭配,撬动十倍杠杆

terraform-skill + github

Skill 生成模块 + 工作流;GitHub MCP 开启 PR

搭建模块、添加工作流、向我们的平台仓库开启 PR。✓ 已复制
terraform-skill + aws

对照检查 Terraform plan 与实时 AWS 状态

展示计划,然后通过 AWS MCP 对比实际资源。✓ 已复制

工具

此 MCP 暴露的能力

工具输入参数何时调用成本
Module scaffolding module purpose + provider 启动新模块 0
Test strategy advisor module scope 添加测试覆盖 0
CI pipeline templates (GHA / GitLab) hosting choice 为仓库设置 CI 0
Pattern compare a snippet 审查现有代码 0

成本与限制

运行它的成本

API 配额
每次调用 Token 数
每次会话 2-6k — 中等
费用
免费 — skill 是本地的
提示
一次只提一个专注的问题(测试 / CI / 布局)。

安全

权限、密钥、影响范围

凭据存储: Skill 中没有凭据。任何提供商凭据应该在你的环境中,而不是生成的代码中。
数据出站: Skill 本身没有数据泄露

故障排查

常见错误与修复

Skill 的建议与你组织的风格冲突

提供你的 .terraform-docs 配置和现有模块作为风格参考。

推荐的 OIDC 设置在 assume-role 上失败

检查信任策略的 sub 条件是否匹配你的分支/环境。

替代方案

terraform-skill 对比其他方案

替代方案何时用它替代权衡
以 Terragrunt 优先的 skills你已决定使用 Terragrunt这里的覆盖范围较少;Terragrunt 工作流有很大差异
云提供商原生 IaC skills(aws-cdk, pulumi)你没有使用 Terraform/OpenTofu不同的工具,不同的模式

更多

资源

📖 阅读 GitHub 上的官方 README

🐙 查看未解决的 issue

🔍 浏览全部 400+ MCP 服务器和 Skills