mcpField
T
terraform-skill

terraform-skill

github.com/sickn33云与 DevOps48.8k229 次安装今天更新
代码仓库

关于 terraform-skill

为 Claude 提供 Terraform 和 OpenTofu 基础设施即代码指导的技能,涵盖测试、模块、CI/CD 和生产实践。适用于编写或审查配置、规划多环境部署及基础设施测试。

主要功能

  1. 01Terraform 与 OpenTofu 配置指导
  2. 02比较 count 与 for_each 用法
  3. 03覆盖测试、模块与 CI/CD
  4. 04说明状态文件和密钥安全

适用场景

  1. 01创建基础设施配置或模块
  2. 02为 IaC 项目设置测试
  3. 03规划多环境部署
  4. 04审查或重构 Terraform 配置

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill terraform-skill

安装后在 Claude Code 中输入/terraform-skill确认已加载。

附带文件references/detailed-guide.md

详细介绍

Claude 的 Terraform 技能

全面的 Terraform 和 OpenTofu 指南,涵盖测试、模块、CI/CD 和生产实践。基于 terraform-best-practices.com 和企业经验。

详细指南

执行此技能前,请阅读详细指南。该指南保留了完整的流程和参考资料。必须遵守其中的安全要求、前置条件和验证要求。针对特定任务,请加载相关章节;进行端到端工作时,请通读整份指南。

何时使用此技能

在以下情况下启用此技能:

  • 创建新的 Terraform 或 OpenTofu 配置或模块
  • 为 IaC 代码搭建测试基础设施
  • 选择测试方法(validate、plan、框架)
  • 规划多环境部署结构
  • 为基础设施即代码实施 CI/CD
  • 审查或重构现有 Terraform/OpenTofu 项目
  • 选择模块模式或状态管理方法

以下情况不要使用此技能:

  • 基础 Terraform/OpenTofu 语法问题(Claude 已了解)
  • 特定提供商的 API 参考(改为链接到文档)
  • 与 Terraform/OpenTofu 无关的云平台问题

Count 与 For_Each:何时使用

快速决策指南
场景使用原因
布尔条件(创建或不创建)count = condition ? 1 : 0简单的开关
简单的数值复制count = 3固定数量的相同资源
项目可能会重新排序或删除for_each = toset(list)资源地址稳定
通过键引用for_each = map可按名称访问资源
多个命名资源for_each更易维护
常见模式

布尔条件:

# ✅ GOOD - Boolean condition
resource "aws_nat_gateway" "this" {
  count = var.create_nat_gateway ? 1 : 0
  # ...
}

使用 for_each 稳定寻址:

# ✅ GOOD - Removing "us-east-1b" only affects that subnet
resource "aws_subnet" "private" {
  for_each = toset(var.availability_zones)

  availability_zone = each.key
  # ...
}

# ❌ BAD - Removing middle AZ recreates all subsequent subnets
resource "aws_subnet" "private" {
  count = length(var.availability_zones)

  availability_zone = var.availability_zones[count.index]
  # ...
}

**迁移指南和详细示例请参阅:**代码模式:Count 与 For_Each

安全与合规

需要时,通过获批的密钥渠道使用敏感输入;sensitive = true 只能在常规显示中隐藏值,不会加密状态文件或 plan 文件。确保后端访问、锁定、加密和 plan 工件的安全。不要将 Secrets Manager 数据读入 Terraform 后,就认定其值不会进入状态文件。仅在所选 Terraform/提供商版本支持时,使用受支持的临时参数或只写参数。

基本安全检查
# Static security scanning
trivy config .
checkov -d .
应避免的常见问题

❌ 不要:

  • 硬编码密钥,或假设敏感变量能让值不进入状态文件
  • 使用默认 VPC
  • 跳过加密
  • 将安全组对 0.0.0.0/0 开放

✅ 应该:

  • 使用 AWS Secrets Manager / Parameter Store
  • 创建专用 VPC
  • 启用静态加密
  • 遵循最小权限原则配置安全组

详细安全指南请参阅:

  • 安全与合规指南 - Trivy/Checkov 集成、密钥管理、状态文件安全、合规性测试

限制

  • 仅当任务明确符合上述范围时才使用此技能。
  • 不要将输出视为特定环境验证、测试或专家审查的替代品。
  • 如果缺少必要输入、权限、安全边界或成功标准,请停止并请求澄清。

评论

支持 Markdown