如何为Terragrunt部署定义全局变量



如何定义/引用在整个Terragrunt部署中重用的一组变量?我目前在每个部署级别的locals{}块中指定相同的值(例如,subscription, resource_group, environment等),但这似乎与使用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")))
}

,然后在文件夹a main.tf:

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

,但我得到错误的本地值与名称"global_vars">

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

原来我把弄得太复杂了为了解决这个问题,我必须将我的yaml格式修改为一个映射:

locals:
environment : "dev"

,并在子主程序的locals{}块中添加一行。tf的:

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

然后像这样引用这些值:

environment = local.global_vars.locals.environment
也许有更漂亮的方法,但这是我的!