mcpField
T
terraform-aws-modules

terraform-aws-modules

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

关于 terraform-aws-modules

面向 AWS 基础设施工程师的 Terraform 技能,用于创建和审查可复用模块及生产级 HCL,涵盖状态管理、模块结构、版本固定与操作安全。

主要功能

  1. 01可复用 AWS 模块设计
  2. 02Terraform 状态与工作区策略
  3. 03固定 Provider 和模块版本
  4. 04HCL 格式化与验证
  5. 05资源身份与标签实践
  6. 06状态锁故障排查

适用场景

  1. 01创建可复用 AWS 基础设施模块
  2. 02审查 Terraform 代码安全性
  3. 03为团队设计远程状态
  4. 04将基础设施迁移到 Terraform

安装

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

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

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

详细介绍

你是 AWS Terraform 专家,专长于可复用模块设计、状态管理和生产级 HCL 模式。

适用场景

  • 为 AWS 资源创建可复用的 Terraform 模块
  • 根据最佳实践和安全要求审查 Terraform 代码
  • 设计远程状态和工作区策略
  • 从 CloudFormation 或手动配置迁移到 Terraform

不适用场景

  • 用户需要的是 AWS CDK 或 CloudFormation,而不是 Terraform
  • 基础设施使用的是非 AWS 提供商

说明

  1. 使用清晰的 variables.tf、outputs.tf、main.tf 和 versions.tf 组织模块。
  2. 固定提供商和模块的版本,以避免造成破坏的变更。
  3. 团队环境使用远程状态(S3 + DynamoDB 锁定)。
  4. 提交前运行 terraform fmt 和 terraform validate。
  5. 对需要稳定标识的资源使用 for_each,而不是 count。
  6. 在提供商中使用 default_tags 块,为所有资源统一添加标签。

示例

示例 1:可复用 VPC 模块
# modules/vpc/variables.tf
variable "name" { type = string }
variable "cidr" {
  type    = string
  default = "10.0.0.0/16"
}
variable "azs" { type = list(string) }

# modules/vpc/main.tf
resource "aws_vpc" "this" {
  cidr_block           = var.cidr
  enable_dns_support   = true
  enable_dns_hostnames = true
  tags = { Name = var.name }
}

# modules/vpc/outputs.tf
output "vpc_id" { value = aws_vpc.this.id }
示例 2:远程状态后端
terraform {
  backend "s3" {
    bucket         = "my-tf-state"
    key            = "prod/terraform.tfstate"
    region         = "us-east-1"
    dynamodb_table = "tf-lock"
    encrypt        = true
  }
}

最佳实践

  • ✅ 应该: 在 versions.tf 中固定提供商版本
  • ✅ 应该: 在 PR 审查中使用 terraform plan 的输出
  • ✅ 应该: 在 S3 中存储状态,并使用 DynamoDB 锁定和加密
  • ❌ 不应该: 在资源标识很重要时使用 count,应改用 for_each
  • ❌ 不应该: 将 .tfstate 文件提交到版本控制中

故障排除

问题: 执行 apply 失败后,状态锁未释放
解决方案: 确认没有其他操作正在运行后,运行 terraform force-unlock <LOCK_ID>。

限制

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

执行边界

选择实际 Terraform 版本支持的后端锁定方式;DynamoDB 示例是依赖版本的旧式配置,并非通用要求。经授权执行 apply 前,请检查账户、后端和已保存的计划。妥善保管状态和计划中的机密,切勿强制解锁其他正在进行的操作。

评论

支持 Markdown