【问题标题】:How to access outputs from a "each cloud service is a folder" approach in Terraform如何从 Terraform 中的“每个云服务都是一个文件夹”方法访问输出
【发布时间】:2019-05-28 09:35:12
【问题描述】:

所以,我有一个 terraform 文件夹结构如下:

environments
  staging
    gke
        main.tf
        terraform.tfvars
        variables.tf
    vpc
        main.tf
        terraform.tfvars
        variables.tf
    secrets.tfvars (non-versioned)
    globals.tfvars
    terraform.tfvars (terragrunt helps require secrets and globals)
modules
    vpc
        main.tf
        outputs.tf
    gke
        main.tf
        outputs.tf

我遇到的问题是我不知道如何从 GKE 模块访问例如我设置为输出的 VPC 模块自链接。

我看到的每个示例在“暂存”级别上都有一个 main.tf,每个模块都在同一个文件中调用,这样他们就可以访问模块输出,但我没有(我应该和我的文件夹结构方法?)

解决方案会从远程状态中获取价值吗?我试图访问它,但它总是说它找不到资源:

  // Define VPC
  network = "${data.terraform_remote_state.vpc.main_vpc_self_link}"

我尝试访问我的 VPC 模块(该模块称为 vpc)中的这个输出

// Self link to the VPC
output "main_vpc_self_link" {
  value = "${google_compute_network.main_vpc_network.self_link}"
}

【问题讨论】:

    标签: terraform terragrunt


    【解决方案1】:

    您需要在要访问的模块内将输出值作为变量传递:

    module "my_vpc":
      ....
    
    module "gke":
        source = "./modules/gke
        vpc_id = module.my_vpc.id
    

    在您的 gke 模块上,您需要有一个 vpc_id 变量来接收它。

    【讨论】:

    • 但是,如果我在同一个文件中调用 vpc 模块和 gke,这会起作用吗?问题是我没有像全局 main.tf,而是每个内部都有 main.tf云服务。我说得够清楚吗?
    猜你喜欢
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 2020-10-19
    相关资源
    最近更新 更多