SuperAPI AI 工具集

terraform-best-practices

部署与运维

查看项目

更新于 10-15 17:31

技能介绍

用途:这是一份 Terraform 约定速查参考,用于在编写或审查 Terraform 代码时快速对照文件组织、命名、模块、状态、安全与反模式等规范。

主要能力:

  1. 文件组织:区分 live(编排层,含 backend 与 provider)、modules(可复用,无 provider、无硬编码)、envs(按环境配置,含 state.config、terraform.tfvars、secrets.tfvars)。
  2. 命名规范:资源前缀用 {project}-{service}-{env},变量/本地值/输出用 snake_case,资源用 this 或描述性名称,安全组用 name_prefix,文件按资源类型命名,模块目录用 kebab-case,标签键用 PascalCase。
  3. 模块模式:从 c0x12c Terraform Registry 调用模块,source 形如 c0x12c/{name}/aws,并始终版本固定(如 version = "~> 0.6.6");模块内不写 provider,变量需带 description 与 type,输出仅暴露消费方所需值。
  4. 状态管理:使用 S3 后端加 DynamoDB 锁,通过 terraform init -backend-config=../envs/dev/state.config 初始化;跨栈引用使用 terraform_remote_state。
  5. 安全清单:敏感变量标记 sensitive,S3 开启版本、加密与阻止公开访问,RDS 加密、私有子网、生产环境开启删除保护且 publicly_accessible 始终为 false,安全组规则用 source_security_group_id 而非 CIDR,provider 层设置 default_tags。
  6. 反模式:模块内写 provider、模块版本未固定、硬编码名称/ID/账号、代码或提交的 tfvars 中含密钥、通配符 IAM、公开数据库、存储未加密、单文件巨石、自动化中使用 terraform import(应改用 import 块)、变量与输出缺少 description、嵌套 locals、用 count 做条件资源(应改用 for_each)。
  7. CI/CD:PR 阶段执行 fmt 检查、validate、plan 并评论到 PR;合并到 main 后 init、plan、apply;禁止在 PR 上自动 apply,apply 时锁定状态,密钥通过 CI 环境变量注入,CI 中固定 Terraform 版本。

使用方式:作为速查表在编写或评审 Terraform 配置时对照使用,具体命令与代码片段以资料中给出的形式为准。

适用场景:Terraform 配置编写、代码审查、模块设计与 CI/CD 流程规范。

限制:资料未提供具体模块清单、版本兼容范围、收费或平台支持等细节,暂未提供。