我正在尝试建立我的AWS基础架构,并具有以下结构:
regions
└── us-east-2_Ohio
├── terragrunt.hcl
├── variables.tf
└── vpcs
├── myVPC
├── terragrunt.hcl
├── variables.tf
└── vpc.tf在us-east-2_Ohio级别的variables.tf中,我设置了provider和region:
provider "aws" {
region = "us-east-2"
}当我运行terragrunt plan-all时,vpc模块会提示provider.aws.region的myVPC模块。我希望它是从父模块传递过来的,但是无论我怎么尝试,它都不会起作用。它要么报告块类型不是预期的,要么报告目标模块尚未应用。我甚至在us-east-2_Ohio上创建了一个main.tf,它只有
output "provider_region" {
value = "us-east-2a"
}但这并不管用。
任何建议都将不胜感激。
谢谢
发布于 2020-03-31 03:04:16
当使用Terragrunt时,理想情况下,您应该坚持Terragrunt层次结构中的Terragrunt配置,并在单独的存储库中引用Terraform代码。有关这方面的示例,请参阅Terragrunt infrastructure-live和Terragrunt infrastructure-modules存储库。这些演示了一些概念,这些概念可能会帮助您更好地理解如何构建代码。
正如我在上面链接的存储库中所演示的,您将在regions.hcl文件中定义区域,如下所示:
locals {
aws_region = "us-east-1"
}在模块级terragrunt.hcl (示例中的myVPC模块)中,会有一个如下所示的块:
include {
path = find_in_parent_folders()
}这将包含aws_region变量并将其传递给Terraform模块,您可以在provider{}块中对其进行设置。
https://stackoverflow.com/questions/60922893
复制相似问题