如何在Terragrunt实现层声明变量,generate函数是否为可行方案?
Terragrunt层声明变量的实现方案
使用generate函数完全适配你的场景,是合理的实现方式,具体操作如下:
- 首先清理公共modules目录下
variables.tf的内容,仅保留所有项目通用的公共变量声明,移除所有项目差异化的变量定义。 - 在每个项目对应的
terragrunt.hcl中添加generate块,动态生成当前项目专属的变量声明文件,示例配置:
generate "project_custom_vars" { path = "variables.auto.tf" if_exists = "overwrite_terragrunt" contents = <<EOF // 以下为当前项目专属变量声明 variable "env_type" { type = string description = "部署环境类型" validation { condition = contains(["dev", "test", "prod"], var.env_type) error_message = "环境类型仅支持dev/test/prod。" } } variable "instance_count" { type = number description = "服务实例部署数量" default = 1 } EOF }
- 后续在同一个
terragrunt.hcl的inputs块中给上述自定义变量传值即可,用法和公共变量完全一致:
inputs = { // 公共变量传参 region = "cn-beijing" // 项目自定义变量传参 env_type = "prod" instance_count = 3 }
如果多个同类型项目存在通用的自定义变量组,可以把generate块抽离到上层目录的公共terragrunt.hcl中,通过include机制让子项目继承,避免重复配置。
内容的提问来源于stack exchange,提问作者Murakami
相关产品推荐
相关产品推荐

