【问题标题】:How to define global variables for a Terragrunt deployment如何为 Terragrunt 部署定义全局变量
【发布时间】:2021-10-04 16:53:20
【问题描述】:

如何定义/引用一组要在整个 Terragrunt 部署中重复使用的变量?我目前在部署的每个级别的 locals{} 块中指定相同的值(例如,订阅、resource_group、环境等),但这似乎与使用 Terragrunt 的方式完全相反。

我的文件夹结构类似于:

├── Folder A
│   └── main.tf
│   └── terragrunt.hcl
├── Folder B
│   └── main.tf
│   └── terragrunt.hcl
└── global_vars.yaml
└── main.tf
└── terragrunt.hcl

我阅读了Locals 功能,因此在根目录中创建了 global_vars.yaml,其内容如下:

environment = "prod"

并尝试向父级 terragrunt.hcl 添加一个块:

locals {
  global_vars = yamldecode(file(find_in_parent_folders("global_vars.yaml")))
}

然后在FolderA main.tf:

locals {
  ...
  environment = local.common_vars.environment
  ...
}

但我收到错误消息,名称为“global_vars”的本地值尚未声明。

为了增加另一层乐趣,我可能想在子级别覆盖给定变量 - 但我觉得一旦我可以解决这个声明问题,其余的应该很容易(. ..对吗?)。

【问题讨论】:

    标签: variables terragrunt


    【解决方案1】:

    原来我把它弄的方式太复杂了。为了解决这个问题,我必须将我的 yaml 格式修复为实际上是 map

    locals:
      environment : "dev"
    

    并在子 main.tf 的 locals{} 块中添加一行:

    global_vars = yamldecode(file("../../global_vars.yaml"))
    

    然后我引用这样的值:

    environment = local.global_vars.locals.environment
    

    可能有更漂亮的方法,但这是我的!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-01
      • 1970-01-01
      • 2011-08-20
      • 1970-01-01
      • 2023-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多