技能 terraform-aws-modules
📦

terraform-aws-modules

安全

构建生产就绪的 Terraform AWS 模块

创建可复用的 Terraform 基础设施既复杂又容易出错。本技能提供模块设计、状态管理和生产级 HCL 模式方面的专业指导。

支持: Claude Codex Code(CC)
🥉 74 青铜
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“terraform-aws-modules”。 创建一个可复用的 EKS 集群模块,包含适当的变量定义

预期结果:

提供完整的模块结构,其中 variables.tf 定义 cluster_name、node_count 和 instance_type 并带有验证规则,main.tf 包含 aws_eks_cluster 和 aws_eks_node_group 资源并使用 for_each 管理节点组,outputs.tf 导出集群端点和节点组 ARN,versions.tf 将 aws 提供商固定到 >= 4.0

正在使用“terraform-aws-modules”。 为生产环境配置状态锁定

预期结果:

返回 S3 后端配置,包含 bucket terraform-state-prod、key env/prod/terraform.tfstate、region us-east-1、DynamoDB 表 tf-state-lock、启用加密,以及初始状态导入和团队访问策略的说明

安全审计

安全
v1 • 2/25/2026

Static analysis detected 25 patterns but all are false positives. External command references are Terraform CLI documentation examples (terraform fmt, validate, plan, force-unlock), not executable code. The CIDR block 10.0.0.0/16 is standard RFC1918 private networking for VPC configuration. This is documentation-only content with no executable code.

1
已扫描文件
80
分析行数
0
发现项
1
审计总数
未发现安全问题
审计者: claude

质量评分

38
架构
100
可维护性
87
内容
50
社区
100
安全
91
规范符合性

你能构建什么

DevOps 工程师构建 VPC 模块

创建一个可复用的 VPC 模块,包含适当的变量定义、输出和标签策略,以便在不同环境间进行一致的网络部署。

平台团队设置状态管理

为生产 Terraform 状态配置带有 DynamoDB 锁定的 S3 后端,确保安全的并发操作和状态加密。

从 CloudFormation 迁移的开发者

将现有的 CloudFormation 模板转换为 Terraform HCL,并在一开始就采用适当的模块结构和状态管理。

试试这些提示

创建基础模块结构
为启用版本控制的 AWS S3 存储桶创建 Terraform 模块结构。包括用于存储桶名称和版本控制标志的 variables.tf、包含资源的 main.tf、用于存储桶 ARN 和名称的 outputs.tf,以及固定 AWS 提供商版本的 versions.tf。
审查模块最佳实践
审查此 Terraform 模块的最佳实践和安全问题。检查是否有适当的变量验证、敏感输出标记、提供商版本固定和一致的标签策略。
设计远程状态策略
为具有 dev、staging 和 production 环境的团队设计远程状态后端配置。使用 S3 进行存储并配合 DynamoDB 锁定。为每个环境包含独立的状态键并启用加密。
从 Count 迁移到 For_Each
重构此 Terraform 配置,使用 for_each 替代 count 来管理多个子网。当前代码使用 count 配合列表索引,在移除中间元素时会导致问题。保留所有现有属性。

最佳实践

  • 在 versions.tf 中固定提供商和模块版本以防止更新时出现破坏性变更
  • 当资源标识必须在多次 apply 间保持稳定时使用 for_each 而非 count
  • 将远程状态存储在 S3 中并启用 DynamoDB 锁定和服务器端加密

避免

  • 对可能移除中间元素的资源使用 count,导致不必要的重新创建
  • 将 .tfstate 文件提交到版本控制,这会暴露敏感的资源数据
  • 未使用 terraform_remote_state 数据源就引用其他配置的状态

常见问题

如何在 Terraform apply 失败后处理状态锁定错误?
首先确认没有其他操作正在运行。然后使用 terraform force-unlock 和错误消息中的锁定 ID。在强制解锁之前务必确认之前的操作确实已失败。
应该使用一个状态文件还是为每个环境使用独立的状态?
为每个环境(dev、staging、prod)使用独立的状态文件,在同一个 S3 存储桶中使用不同的键。这样既能提供隔离,又能保持状态管理简单,并为每个环境启用独立的生命周期。
如何在 Terraform 变量中管理密钥?
在 variables.tf 中使用 sensitive = true 标记敏感变量。将实际值存储在 AWS Secrets Manager 或 SSM Parameter Store 中,并通过数据源引用它们。切勿将包含密钥的变量值提交到版本控制。
Terraform 中 count 和 for_each 有什么区别?
count 使用数字索引,当移除元素时索引会偏移,导致资源重新创建。for_each 使用稳定的字符串或对象键,在更改其他元素时保持资源标识不变。大多数情况下优先使用 for_each。
如何将现有 AWS 资源导入到 Terraform 状态中?
首先在 HCL 中定义资源,然后使用资源地址和 AWS 资源 ID 运行 terraform import。对于复杂导入,可以考虑使用 terraform import -generate-config 来自动生成配置。
我可以将此技能用于 Azure 或 GCP 基础设施吗?
本技能专门针对 AWS 提供商模式。虽然通用 Terraform 概念适用于 Azure 和 GCP,但提供商特定的资源和最佳实践有所不同。对于非 AWS 基础设施请使用特定于提供商的指导。

开发者详情

文件结构

📄 SKILL.md