用途:提供与工具无关的 IaC 最佳实践,帮助团队在选型、组织代码、测试、发布与治理上形成规范流程。
主要能力:
- 工具选型决策矩阵,对比 Terraform、CloudFormation、CDK、Pulumi 在多云支持、语言、状态管理、生态、学习曲线、测试与适用场景上的差异;建议多云或大团队默认 Terraform,团队偏好通用语言时用 CDK/Pulumi,仅用 AWS 且已熟悉时用 CloudFormation。
- 项目结构:modules/ 放可复用模块,environments/ 按环境组合模块,policies/ 放 OPA/Sentinel 策略,tests/ 放集成测试;要求各环境独立状态、固定模块与 provider 版本、不提交含密钥的 .tfstate 或 .tfvars。
- 模块设计:单一职责、输入用带描述/类型/校验的变量、输出有文档、用 for_each 替代 count、用 locals 计算值、terraform-docs 生成文档、发布时语义化版本。
- 测试金字塔:依次执行 fmt/validate、tflint、checkov 或 tfsec、terraform plan 与 Infracost 成本估算、OPA 策略校验、Terratest 或 Terraform 1.6+ 原生测试。
- CI/CD:给出 GitHub Actions 的 validate、plan、apply 三阶段示例,plan 结果与成本差异作为 PR 评论,生产 apply 需人工审批;GitOps 流程要求不在本地对生产执行 apply。
- 状态管理:使用远程后端(如 S3 + DynamoDB 锁)、加密、版本控制、按组件与环境分离状态,键名形如 <env>/<component>/terraform.tfstate;用 terraform plan -detailed-exitcode 检测漂移。
- 常见 AWS 模式与标签策略,以及反模式清单(单体状态、本地 apply、无锁、硬编码、无安全扫描、滥用 count、误 destroy、提交密钥、无漂移检测、跳过 plan 审查)。
使用方式:按资料中的目录结构与命令执行,如 terraform fmt -check -recursive、terraform validate、tflint --recursive、checkov -d .、terraform plan -out=tfplan、infracost breakdown --path=tfplan --format=json。
适用场景:多云或大规模团队的基础设施管理、模块化复用、合规与成本治理。
限制:资料以 Terraform 示例为主,其他工具细节较少;具体云厂商、价格与平台支持情况暂未提供。