【问题标题】:Terragrunt: Reading upstream varaiblesTerragrunt:读取上游变量
【发布时间】:2020-07-10 08:52:42
【问题描述】:

我正在尝试构建我的 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 模块提示我输入 vpc 模块的provider.aws.region。我希望从父模块传递它,但无论我尝试什么都行不通。它要么抱怨块类型不是预期的,要么抱怨目标模块没有被应用。我什至在 us-east-2_Ohio 创建了一个 main.tf,它只有

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

那没有用。

任何建议将不胜感激。

谢谢

【问题讨论】:

    标签: terragrunt


    【解决方案1】:

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

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

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

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

    include {
      path = find_in_parent_folders()
    }
    

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

    【讨论】:

      猜你喜欢
      • 2021-12-16
      • 2020-07-23
      • 2021-06-01
      • 2020-07-02
      • 2021-05-16
      • 2020-11-13
      • 2021-05-01
      • 2021-10-04
      • 2023-03-11
      相关资源
      最近更新 更多