You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:24:08