Terraform 如何访问“a”的输出;每个云服务都是一个文件夹;地形进近

Terraform 如何访问“a”的输出;每个云服务都是一个文件夹;地形进近,terraform,terragrunt,Terraform,Terragrunt,因此,我有一个terraform文件夹结构,如下所示: environments staging gke main.tf terraform.tfvars variables.tf vpc main.tf terraform.tfvars variables.tf secrets.tfvars (non-versioned) globals.tfvars t

因此,我有一个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模块自链接

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

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

  // Define VPC
  network = "${data.terraform_remote_state.vpc.main_vpc_self_link}"
我尝试访问VPC模块中的输出(该模块称为VPC)


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

module "my_vpc":
  ....

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

在gke模块上,您需要有一个
vpc\u id
变量来接收它。

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

module "my_vpc":
  ....

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

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

但是如果我在同一个文件中调用vpc模块和gke,这会起作用,对吗?问题是,我没有全局main.tf,而是每个云服务中都有main.tf。我够清楚了吗?但是如果我在同一个文件中调用vpc模块和gke,这会起作用,对吗?问题是,我没有全局main.tf,而是每个云服务中都有一个main.tf。我够清楚了吗?