Terragrunt能否通过全局变量设置Git分支作为Source引用?
Terragrunt全局分支配置与Source Mapping问题解答
1. 用全局变量统一设置Git源分支
完全可以通过全局变量统一指定Git源的分支,避免多分支切换时逐个修改source字段的麻烦,常见实现方式有两种:
Terragrunt全局变量定义:在根目录的
terragrunt.hcl中定义全局分支变量,模块配置直接引用即可:# 根目录terragrunt.hcl locals { branch = get_env("TG_VAR_BRANCH", "develop") # 默认用develop分支,可通过环境变量覆盖 } # 模块目录的terragrunt.hcl source = "git::https://git.repo.modules.git//src/modules/vpc?ref=${local.branch}"直接使用环境变量:Terragrunt自动识别前缀为
TG_VAR_的环境变量,可直接在source中引用:source = "git::https://git.repo.modules.git//src/modules/vpc?ref=${get_env("TG_VAR_BRANCH", "develop")}"运行时只需设置
export TG_VAR_BRANCH=feature/new-vpc,所有模块就会自动切换到对应分支。
2. Source Mapping无需逐一映射所有源
Terragrunt的Source Mapping支持通配符批量匹配,不用为每个模块单独配置规则。比如要统一替换某仓库下所有模块的分支,只需写:
source_map = { "git::https://git.repo.modules.git//*" = "git::https://git.repo.modules.git//*?ref=${local.branch}" }
这里的*会匹配仓库下所有模块路径,一次性完成所有源的分支替换。如果有特殊模块需要单独指定分支,再单独添加映射规则即可,其优先级会高于通配符规则。
内容的提问来源于stack exchange,提问作者finnk
相关产品推荐
相关产品推荐

