概述
重复的 Terraform 配置会让每处修改都要同步多份并逐渐分叉。识别重复模式并定义模块接口、实现并文档化输入输出、先迁移一个消费方并在移动状态后确认计划为空、再分批迁移其余,可在不改变基础设施的前提下消除重复。
关键步骤
- 识别重复模式并定义模块接口。
- 实现模块并文档化输入输出。
- 迁移一个消费方并验证移动状态后计划为空。
- 分批迁移其余并删除重复配置。
验证
- 每个消费方迁移后计划无变更。
- 模块按版本固定。
- 输入输出有文档。
- 旧配置归档。
决策点
应移动状态而非重建资源,除非资源可安全重建且可弃;模块应以单一清晰模式为界,多功能模块会滋生难懂接口与隐式耦合。
适用范围
本条目围绕「Terraform 模块抽取工作流」给出可复制的步骤、验证方式与常见问题,适合需要按此流程落地的工程团队。执行时请结合自身上下文调整命令与阈值,并在变更前后留存证据,便于后续复核与回滚。
module "service" {
source = "git::https://github.com/acme/tf-service.git?ref=v1.2.0"
name = "orders"
cpu = 512
}
# terraform state mv ... then plan must be empty