返回顶部
t

terraform-skillTerraform技能

Use when working with Terraform or OpenTofu - creating modules, writing tests (native test framework, Terratest), setting up CI/CD pipelines, reviewing configurations, choosing between testing approaches, debugging state issues, implementing security scanning (trivy, checkov), or making infrastructure-as-code architecture decisions

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
102
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

terraform-skill

Terraform 技能 for Claude

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

何时使用此技能

在以下情况下激活此技能:

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

不要将此技能用于:

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

核心原则

1. 代码结构理念

模块层级:

类型使用时机范围
资源模块单一逻辑组的关联资源VPC + 子网、安全组 + 规则
基础设施模块
为特定目的组合的资源模块集合 | 同一区域/账户中的多个资源模块 |
| 组合 | 完整的基础设施 | 跨多个区域/账户 |

层级结构: 资源 → 资源模块 → 基础设施模块 → 组合

目录结构:

environments/ # 环境特定配置
├── prod/
├── staging/
└── dev/

modules/ # 可复用模块
├── networking/
├── compute/
└── data/

examples/ # 模块使用示例(也可作为测试)
├── complete/
└── minimal/

来自terraform-best-practices.com的关键原则:

  • - 将环境(prod、staging)与模块(可复用组件)分离
  • 使用examples/作为文档和集成测试夹具
  • 保持模块小而专注(单一职责)

有关详细模块架构,请参见: 代码模式:模块类型与层级

2. 命名约定

资源:
hcl

好:描述性、上下文相关


resource awsinstance webserver { }
resource awss3bucket application_logs { }

好:对于单例资源(该类型只有一个)使用this

resource aws_vpc this { } resource awssecuritygroup this { }

避免:对非单例资源使用通用名称

resource aws_instance main { } resource awss3bucket bucket { }

单例资源:

当你的模块只创建一个该类型的资源时,使用this:

✅ 正确做法:
hcl
resource aws_vpc this {} # 模块创建一个VPC
resource awssecuritygroup this {} # 模块创建一个安全组

❌ 不要对多个资源使用this:
hcl
resource aws_subnet this {} # 如果要创建多个子网

创建多个同类型资源时,使用描述性名称。

变量:
hcl

需要时添加上下文前缀


var.vpccidrblock # 不仅仅是cidr
var.databaseinstanceclass # 不仅仅是instance_class

文件:

  • - main.tf - 主要资源
  • variables.tf - 输入变量
  • outputs.tf - 输出值
  • versions.tf - 提供商版本
  • data.tf - 数据源(可选)

测试策略框架

决策矩阵:选择哪种测试方法?

你的情况推荐方法工具成本
快速语法检查静态分析terraform validate、fmt免费
提交前验证
静态 + 代码检查 | validate、tflint、trivy、checkov | 免费 | | Terraform 1.6+,简单逻辑 | 原生测试框架 | 内置 terraform test | 免费-低 | | Pre-1.6,或具备Go专业知识 | 集成测试 | Terratest | 低-中 | | 安全/合规重点 | 策略即代码 | OPA、Sentinel | 免费 | | 成本敏感的工作流 | 模拟提供商(1.7+) | 原生测试 + 模拟 | 免费 | | 多云、复杂场景 | 完整集成 | Terratest + 真实基础设施 | 中-高 |

基础设施测试金字塔

/\
/ \ 端到端测试(昂贵)
/\ - 完整环境部署
/ \ - 类生产环境设置
/\
/ \ 集成测试(中等)
/\ - 模块隔离测试
/ \ - 测试账户中的真实资源
/\ 静态分析(廉价)
- validate、fmt、lint
- 安全扫描

原生测试最佳实践(1.6+)

在生成测试代码之前:

  1. 1. 使用Terraform MCP验证模式:

搜索提供商文档 → 获取资源模式 → 识别块类型

  1. 2. 选择正确的命令模式:
- command = plan - 快速,用于输入验证 - command = apply - 需要计算值和集合类型块
  1. 3. 正确处理集合类型块:
- 不能使用[0]索引 - 使用for表达式进行迭代 - 或使用command = apply来物化

常见模式:

  • - S3加密规则:集合(使用for表达式)
  • 生命周期转换:集合(使用for表达式)
  • IAM策略语句:集合(使用for表达式)

有关详细测试指南,请参见:

代码结构标准

资源块排序

严格排序以确保一致性:

  1. 1. count或foreach放在最前面(后面空一行)
  2. 其他参数
  3. tags作为最后一个实际参数
  4. dependson在tags之后(如果需要)
  5. lifecycle放在最后(如果需要)

hcl

✅ 正确 - 正确的排序


resource awsnatgateway this {
count = var.createnatgateway ? 1 : 0

allocationid = awseip.this[0].id
subnetid = awssubnet.public[0].id

tags = {
Name = ${var.name}-nat
}

dependson = [awsinternet_gateway.this]

lifecycle {
createbeforedestroy = true
}
}

变量块排序

  1. 1. description(始终需要)
  2. type
  3. default
  4. validation
  5. nullable(当设置为false时)

hcl
variable environment {
description = 用于资源标记的环境名称
type = string
default = dev

validation {
condition = contains([dev, staging, prod], var.environment)
error_message = 环境必须是以下之一:dev、staging、prod。
}

nullable = false
}

有关完整结构指南,请参见: 代码模式:块排序与结构

Count vs For_Each:何时使用

快速决策指南

场景使用原因
布尔条件(创建或不创建)count = condition ? 1 : 0简单的开关切换
简单的数字复制
count = 3 | 固定数量的相同资源 | | 项目可能被重新排序/移除 | for_each = toset(list) | 稳定的资源地址 | | 按键引用 | for_each = map | 命名访问资源 | | 多个命名资源 | for_each | 更好的可维护性 |

常见模式

布尔条件:
hcl

✅ 正确 - 布尔条件


resource awsnatgateway this {
count = var.createnatgateway ? 1 : 0
# ...
}

使用for_each的稳定寻址:
hcl

✅ 正确 - 移除

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 terraform-skill-1775959269 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 terraform-skill-1775959269 技能

通过命令行安装

skillhub install terraform-skill-1775959269

下载

⬇ 下载 terraform-skill v1.0.0(免费)

文件大小: 65.41 KB | 发布时间: 2026-4-13 12:19

v1.0.0 最新 2026-4-13 12:19
Initial release of the Terraform Skill, providing comprehensive best practices and guidance:

- Covers module architecture, naming conventions, and standardized directory layouts.
- Includes testing strategies and comparison of static analysis, native tests, and Terratest.
- Outlines resource and variable block ordering for consistent code.
- Explains when to use `count` versus `for_each` for resource creation.
- Provides references to deep-dive guides for module structure and testing approaches.

Archiver·手机版·闲社网·闲社论坛·智能体自动化市场· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2026 闲社网·AI智能体论坛·AI自动化解决方案·http://xianshe.com

p2p_official_large
返回顶部