2

我正在尝试开发我的 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 "aws" {
  region = "us-east-2"
}

当我运行 terragrunt plan-all 时,myVPC 模块提示我provider.aws.region使用 vpc 模块。我希望从父模块传递它,但无论我尝试什么都行不通。它要么抱怨块类型不是预期的,要么抱怨目标模块没有被应用。我什至在us-east-2_Ohio只有

output "provider_region" {
  value = "us-east-2a"
}

那没有用。

任何建议将不胜感激。

谢谢

4

1 回答 1

0

使用 Terragrunt 时,理想情况下,您应该坚持 Terragrunt 层次结构中的 Terragrunt 配置,并在单独的存储库中引用 Terraform 代码。有关这方面的示例,请参阅Terragrunt infrastructure-liveTerragrunt Infrastructure-modules存储库。这些演示了一些概念,可以帮助您更了解如何构建代码。

正如我在上面链接的存储库中所展示的,您将在一个文件中定义该区域,regions.hcl如下所示:

locals {
  aws_region = "us-east-1"
}

在您的模块级别terragrunt.hclmyVPC您的示例中的模块)中,您将有一个像这样的块:

include {
  path = find_in_parent_folders()
}

这将包含aws_region变量并将其传递给您的 Terraform 模块,您可以在其中将其设置为一个provider{}块。

于 2020-03-30T19:04:16.260 回答