概述
以移动分支引用模块,会让上游改动静默改变下次 apply 的结果,计划也因此不可复现。语义化标签加精确固定、提交依赖锁文件并记录接口契约,才能让每次执行可追溯且一致。
关键步骤
- 对模块发布做语义化打标签,并引用精确标签。
- 提交依赖锁文件。
- 记录输入输出并做校验。
- 先在预发工作区查看计划再应用到生产。
验证
- 给定配置始终使用同一模块版本。
- 计划在不同机器上可复现。
- 升级时有可审阅的计划。
- 生产者版本由锁文件固定。
注意事项
- 固定模块意味着升级需手动进行,若不制度化可能落后于安全修复。
- 锁文件对平台敏感,混合操作系统团队应使用 providers lock 命令。
适用范围
本条目围绕「妥善为 Terraform 模块做版本管理」给出可复制的步骤、验证方式与常见问题,适合需要按此流程落地的工程团队。执行时请结合自身上下文调整命令与阈值,并在变更前后留存证据,便于后续复核与回滚。
module "network" {
source = "git::https://github.com/acme/network.git?ref=v2.3.1"
cidr = var.cidr
}
# commit .terraform.lock.hcl
terraform providers lock -platform=linux_amd64 -platform=darwin_arm64