如何访问terraform代码中的terragrunt变量

如何访问terraform代码中的terragrunt变量,terraform,terragrunt,Terraform,Terragrunt,我有terragrunt配置,其中在根级别使用局部变量声明了变量,如下所示。在子模块中,已声明名为(terragrunt.hcl)的子terragrunt配置文件。 父terragrunt文件具有以下代码: locals { location = "East US" } location = "${var.location}" 子模块terragrunt文件包含以下代码: include { path = find_in_parent_fol

我有terragrunt配置,其中在根级别使用局部变量声明了变量,如下所示。在子模块中,已声明名为(terragrunt.hcl)的子terragrunt配置文件。 父terragrunt文件具有以下代码:

locals {
  location = "East US"
}
 location = "${var.location}"
子模块terragrunt文件包含以下代码:

include {
  path = find_in_parent_folders()
}

locals {
  myvars = read_terragrunt_config(find_in_parent_folders("terragrunt.hcl"))
  location = local.myvars.locals.location
}
现在,尝试使用以下代码访问地形代码(
main.tf
)中的
location
变量:

locals {
  location = "East US"
}
 location = "${var.location}"
但这会带来错误:

Error: Reference to undeclared input variable

  on main.tf line 13, in resource "azurerm_resource_group" "example":
  13:   location = "${var.location}"

不了解如何在terraform代码中访问terragrunt文件中定义的变量。请建议

此错误消息意味着您的根模块没有声明希望为其提供一个
位置
值,因此您无法引用它

在根Terraform模块中,您可以通过使用
变量
块声明该变量来声明您需要该变量,如错误消息所示:

variable "location" {
  type = string
}

然后,此声明将使引用根模块中其他位置的
var.location
有效,并且如果您意外运行Terraform而未提供此
location
变量的值,它也将导致Terraform产生错误。

我正在使用terrgrunt。我需要在根terragrunt文件中定义这个“location”变量,然后将它引用到terraform的子模块。这可能吗?如果是的话,任何例子我都不熟悉Terragrunt,但它似乎是这样做的功能。好的。谢谢我可以使用输入,但现在下一个问题是,如何在main.tf中引用它?类似这样的内容:var.location(如果位置是在输入中定义的???)我在第一个答案中显示的变量块将使
var.location
在您的根模块中工作,只要您可以配置Terragrunt以使用值填充该变量。