如何从Terraform中的“每个云服务是一个文件夹”方法访问输出

时间:2019-05-28 09:35:13

标签: terraform terragrunt

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

2019-05-28 17:17:38,161 ERROR [stderr] (default task-7) java.lang.IllegalArgumentException: org.infinispan.commons.ma  rshall.NotSerializableException: ph.com.crm.common.admin.ListLovListVO
2019-05-28 17:17:38,167 ERROR [stderr] (default task-7) Caused by: org.infinispan.commons.marshall.NotSerializableExc  eption: ph.com.crm.common.admin.ListLovListVO
2019-05-28 17:17:38,167 ERROR [stderr] (default task-7) java.lang.Exception: org.infinispan.commons.marshall.NotSeria  lizableException: ph.com.crm.common.admin.ListLovListVO

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

vpc_id

在您的gke模块上,您将需要一个use \Illuminate\Container\Container as Container; use \Illuminate\Support\Facades\Facade as Facade; /** * Setup a new app instance container * * @var Illuminate\Container\Container */ $app = new Container(); $app->singleton('app', 'Illuminate\Container\Container'); /** * Set $app as FacadeApplication handler */ Facade::setFacadeApplication($app); 变量来接收它。