全局锁定Terraform required_version是否仅能在modules的versions.tf配置?
Terraform 全局版本锁定方案
首先明确结论:你不需要也不能仅通过modules目录下的versions.tf实现全局版本强制锁定,具体配置逻辑和推荐方案如下:
- Terraform 的
required_version约束生效范围以执行命令时的根工作目录(也就是你运行terraform init/plan/apply的目录)为核心:子模块(modules目录下的模块)中定义的版本约束只会作为调用方的校验项,不会替代根目录的版本规则生效。 - 按照你给出的目录结构,你需要在所有会直接执行Terraform操作的根目录下单独添加版本约束配置,也就是
env/stage、env/prod、global三个目录下各放一份versions.tf,内容为你提到的配置:
terraform { required_version = "1.0.2" }
- 如果要减少重复配置,你可以将版本约束定义在modules目录下的公共基础模块中,所有上层环境的根配置都引用该模块,后续版本升级只需要修改一次模块内的配置即可同步全量校验规则。
- 若要实现完全强管控避免成员手动绕过,可以在团队的CI/CD部署流程中加一步版本校验逻辑,不符合版本要求的部署请求直接拦截。
内容的提问来源于stack exchange,提问作者rkinwar
相关产品推荐
相关产品推荐

