首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何定义Terragrunt部署的全局变量

如何定义Terragrunt部署的全局变量
EN

Stack Overflow用户
提问于 2021-07-29 01:21:43
回答 1查看 436关注 0票数 2

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

我的文件夹结构类似于:

代码语言:javascript
复制
├── Folder A
│   └── main.tf
│   └── terragrunt.hcl
├── Folder B
│   └── main.tf
│   └── terragrunt.hcl
└── global_vars.yaml
└── main.tf
└── terragrunt.hcl

我阅读了本地人特性,这样在根目录中创建了global_vars.yaml,内容如下:

代码语言:javascript
复制
environment = "prod"

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

代码语言:javascript
复制
locals {
  global_vars = yamldecode(file(find_in_parent_folders("global_vars.yaml")))
}

然后在FolderA main.tf中:

代码语言:javascript
复制
locals {
  ...
  environment = local.common_vars.environment
  ...
}

但我得到的错误是,没有声明名为"global_vars“的本地值。

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

EN

回答 1

Stack Overflow用户

发布于 2021-07-29 17:42:53

结果我把事情搞得太复杂了。要解决这个问题,我必须修复我的yaml格式,才能真正成为一个映射。

代码语言:javascript
复制
locals:
  environment : "dev"

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

代码语言:javascript
复制
global_vars = yamldecode(file("../../global_vars.yaml"))

然后我引用如下的值:

代码语言:javascript
复制
environment = local.global_vars.locals.environment

也许有更漂亮的方法去做,但这个是我的!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68569018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档