1. 课程导论:什么是Terraform模块化设计、为什么需要CI/CD服务目录、课程目标与学习路径

1.1 什么是Terraform模块化设计

Terraform 模块化设计是将基础设施代码按照功能、职责或业务边界拆分为可复用、可组合、可版本化的独立单元(Module)的架构方法。每个模块封装一组关联的资源、变量、输出和配置逻辑,通过标准化的输入输出接口与其他模块交互。

维度 单体 Terraform 配置 模块化设计
代码组织 单文件或少量文件,资源混排 按服务/组件拆分独立目录
复用性 复制粘贴,难以维护 通过 source 引用,版本化发布
抽象层级 暴露所有资源细节 隐藏内部实现,暴露必要接口
变更影响 全局 apply,风险集中 局部变更,影响范围可控
团队协作 文件锁冲突频繁 模块独立开发,并行交付
核心原则:模块化 = 封装 + 组合 + 版本化。每个模块只做一件事,并做好一件事(Single Responsibility Principle)。
Terraform 模块化设计核心概念 根模块 (Root Module) 网络模块 计算模块 存储模块 VPC / 子网 / 路由 EC2 / ASG / ALB S3 / RDS / EFS 模块注册中心 (Registry / Git) 模块通过变量(输入)和输出(输出)定义契约,内部资源对调用者透明

1.2 为什么需要CI/CD服务目录

随着组织规模扩大,平台团队面临的核心挑战是:如何在不成为瓶颈的前提下,为多个业务团队提供标准化、合规、可自服务的基础设施环境。CI/CD 服务目录(Service Catalog)正是解决这一矛盾的架构模式。

服务目录定义:一个可搜索、可浏览、可一键部署的标准化基础设施服务清单。每个服务目录项对应一个经过审核的 Terraform 模块,附带版本、文档、输入参数和合规策略。

引入 CI/CD 服务目录的五大驱动力:

  1. 消除重复劳动:每个团队不再各自编写 VPC、Kubernetes 集群或数据库配置,直接从目录选择标准模板。
  2. 内置合规与安全:所有模块经过安全扫描、策略即代码(Policy as Code)验证,默认满足组织合规基线。
  3. 降低认知门槛:应用开发者无需成为 Terraform 专家,通过简单参数即可创建完整环境。
  4. 版本管理与回滚:每个模块版本对应一个经过 CI 测试的制品,支持语义化版本控制和快速回退。
  5. 审计与成本追踪:所有部署记录关联到服务目录项,便于成本分摊、资源审计和容量规划。
对比维度 传统 IaC 模式 CI/CD 服务目录模式
交付方式 手动编写配置,PR 审批 自服务门户,一键部署
标准化程度 各团队自行定义,差异大 平台统一维护,版本一致
变更流程 人工审核,周期长 CI 流水线自动验证 + 审批
环境一致性 开发/测试/生产配置漂移 同一模块版本,多环境复用
团队效率 平台团队成为瓶颈 应用团队自助,平台赋能
CI/CD 服务目录工作流 平台团队 定义模块 + 策略 模块注册中心 版本化 + 文档 CI 验证流水线 lint / plan / 安全扫描 服务目录 门户 应用团队 选择目录项 部署请求 参数 + 环境 CD 部署流水线 apply / 审批 / 通知 目标环境 Dev/Stg/Prd 反馈回路:成本 / 合规 / 性能报告 平台团队负责模块质量,应用团队负责业务配置,职责分离且协作高效

1.3 课程目标与学习路径

本课程旨在帮助 DevOps 工程师、平台工程师和架构师掌握从零构建企业级 Terraform 模块化 CI/CD 服务目录的完整方法论与实践技能。

课程核心目标:学完本课程后,你能够独立设计、实现并维护一套支持多团队、多环境、多云的 Terraform 服务目录体系。

具体学习目标:

  • 掌握 Terraform 模块化设计原则、目录结构规范和版本管理策略。
  • 学会使用 Terraform Registry、Git 子目录或 OCI 制品仓库作为模块注册中心。
  • 构建 CI 流水线实现模块的 lint、format、validate、plan 和安全扫描。
  • 构建 CD 流水线实现环境的自动部署、审批、通知和状态同步。
  • 集成策略即代码(OPA / Sentinel)确保所有部署符合组织合规要求。
  • 设计服务目录门户(Backstage / Port / 自建)实现团队自服务。
  • 建立成本标签、资源审计和漂移检测机制,实现持续治理。

学习路径与章节地图:

阶段 章节范围 核心产出
基础篇 第 1-5 章 模块化设计原则、目录结构、版本管理
构建篇 第 6-12 章 CI 流水线、模块测试、注册中心搭建
交付篇 第 13-20 章 CD 流水线、审批流、多环境部署
治理篇 第 21-25 章 策略即代码、成本管理、漂移检测
进阶篇 第 26-30 章 多云目录、自服务门户、生产运营
前置要求:建议具备基础的 Terraform 使用经验(了解 main.tf、variables.tf、outputs.tf 基本结构),熟悉 Git 工作流和 CI/CD 基本概念。无需精通所有云服务商,课程以 AWS 为主,但原则适用于 AWS / Azure / GCP。

推荐学习方式:

  • 每章先阅读概念部分,理解 Why 和 What。
  • 跟随代码示例动手实践,建议准备一个独立的 AWS 账号或使用 LocalStack。
  • 完成每章末尾的“动手练习”和“思考题”,巩固理解。
  • 在 GitHub 上创建自己的服务目录仓库,边学边构建。