利用 AI 构建生产级 Terraform AWS 可复用模块

解决基础设施代码冗余问题:通过为 AI 设定 HCL 最佳实践规范,让其生成结构清晰、版本可控且具备远程状态锁定的生产级 AWS Terraform 模块。

为什么需要这个技能

在构建 AWS 基础设施时,简单的脚本编写很容易导致代码重复、版本冲突或状态丢失。一个合格的生产级模块需要严格的文件结构、精确的版本锁定以及安全的远程状态管理。

本技能赋予 AI 专家级的 Terraform 视角,使其不再仅仅生成单文件脚本,而是能够设计出包含 variables.tf(变量)、outputs.tf(输出)和 versions.tf(版本约束)的标准化模块,确保基础设施在团队协作中具备高可用性和可维护性。

适用场景

  • 构建可复用组件:为公司内部创建标准化的 VPC、EC2 或 RDS 部署模块。
  • 代码审查与优化:让 AI 检查现有的 Terraform 代码是否符合安全规范和最佳实践。
  • 架构迁移:将原有的 CloudFormation 或手动配置的 AWS 环境迁移至 Terraform。
  • 状态管理设计:配置 S3 + DynamoDB 的远程状态锁定策略,防止多人并发操作导致状态损坏。

核心工作流

  1. 标准化结构定义:要求 AI 将模块拆分为 main.tf(核心逻辑)、variables.tf(输入定义)、outputs.tf(结果输出)和 versions.tf(Provider 约束)。
  2. 实施版本锁定:在 versions.tf 中明确锁定 Terraform 版本和 AWS Provider 版本,避免因自动升级导致环境崩溃。
  3. 优化资源标识:优先使用 for_each 而非 count 来创建资源,确保单个资源被修改或删除时不会触发整个列表的索引偏移。
  4. 配置远程后端:实现基于 S3 的状态存储与 DynamoDB 的并发锁机制。
  5. 验证与格式化:在提交前通过 terraform fmtterraform validate 确保语法正确且风格统一。

代码示例

可复用 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 }

远程状态后端配置

terraform {
  backend "s3" {
    bucket         = "my-tf-state"
    key            = "prod/terraform.tfstate"
    region         = "us-east-1"
    dynamodb_table = "tf-lock"
    encrypt        = true
  }
}

下载和安装

下载 terraform-aws-modules 中文版 Skill ZIP

解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md

你可能还需要

暂无推荐