如何在 Terraform 文件中使用 terragrunt.hcl 中定义的本地变量?

Hor*_*rus 5 terraform terragrunt

我创建了这个文件夹结构:

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.tf\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 terragrunt.hcl\n
Run Code Online (Sandbox Code Playgroud)\n
# FILE: terragrunt.hcl\n\ninclude {\n  path = find_in_parent_folders()\n}\n\nlocals {\n  common_vars = read_terragrunt_config(find_in_parent_folders("common.hcl"))\n  cluster_name = local.common_vars.locals.cluster_name\n}\n\nterraform {\n  source = "./main.tf"\n}\n
Run Code Online (Sandbox Code Playgroud)\n
# FILE: main.tf\n\nmodule "tags" {\n  source = "..."\n\n  eks_cluster_names = [local.cluster_name]\n}\n\nmodule "vpc" {\n  source = "..."\n\n  aws_region = local.common_vars.locals.aws_region\n  \n  ...\n\n  vpc_custom_tags = module.tags.vpc_eks_tags\n  \n  ...\n}\n
Run Code Online (Sandbox Code Playgroud)\n

但对于local.我尝试使用的每一个,我都会收到一个错误:

\n
A local value with the name "blabla" has not been declared\n
Run Code Online (Sandbox Code Playgroud)\n

所以现在我正在尝试找出一种方法来实现这项工作。我考虑遵循how-to-access-terragrunt-variables-in-terraform-code,但我不想创建一个variables.tf. 另外,另一个问题是我必须重新定义 中模块的所有输出main.tf,是否有更好的方法来做到这一点?

\n

是否有一个我可以遵循的良好实践结构?我怎样才能将这些当地人“传播”terragrunt.hclmain.tf

\n

Ber*_*las 0

Terragrunt 直接调用 TF 模块。这意味着摆脱main.tf并仅使用 Terragrunt 来连接您的模块。每个 TF 模块需要有一个单独的子文件夹(组件)terragrunt.hcl

\n

您的项目结构将如下所示:

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 terragrunt.hcl\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tags\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 terragrunt.hcl\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 vpc\n \xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 terragrunt.hcl\n
Run Code Online (Sandbox Code Playgroud)\n

请随意查看其工作原理以及变量如何在我的示例中跨模块传递

\n