5.3 基础设施即代码(IaC)规范

一、适用范围与目标

  • 适用于Terraform、Pulumi、Ansible、Helm等IaC工具的基础设施自动化管理。
  • 目标:实现基础设施自动化、标准化、可追溯、可回滚。

二、管理目标

  1. 目录结构、命名、变量、模块标准化
  2. 代码变更可审计、可回滚、可复用
  3. 敏感信息安全管理,合规可追溯

三、详细规范

  • 目录结构:统一modules、environments、scripts等目录,便于复用与治理
  • 命名规范:资源、变量、模块命名统一,便于自动化与排查
  • 变量与参数:集中管理,支持多环境覆盖,敏感参数加密存储(如Vault、SOPS)
  • 代码管理:纳入Git版本控制,分支策略(如main/dev/feature),变更需评审与自动化测试
  • 部署与回滚:自动化部署流程,支持dry-run、回滚机制,变更记录与审计
  • 工具与最佳实践:推荐Terraform、Pulumi、Ansible、Helm,代码复用、模块化、文档化

四、操作流程

  1. IaC代码开发 → 代码评审 → 测试 → 合并主干 → 自动化部署
  2. 变更申请 → 审批 → 部署 → 验证 → 回滚(如需)
  3. 定期代码审计与模块优化

五、实际案例

  • 新增VPC、子网、ECS等资源,全部通过Terraform模块化管理
  • 生产环境IaC变更,先dry-run验证,审批后上线,异常时一键回滚
  • 敏感变量如数据库密码通过Vault加密注入,未出现在代码库

六、目录结构模板

infra/
  ├── modules/
  ├── environments/
  ├── scripts/
  ├── main.tf
  ├── variables.tf
  └── README.md

七、注意事项

  • 禁止硬编码敏感信息,禁止无评审直接上线
  • 变更需全链路留痕,回滚流程需验证
  • IaC代码需定期重构与模块化优化

八、参考资料

  • 《Terraform最佳实践》
  • 《基础设施即代码白皮书》
  • 团队内部IaC开发手册