Terraform:引用了未知模块

时间:2018-12-01 17:30:31

标签: google-cloud-platform cloud terraform nat

希望大家度过一个愉快的周末。

对于在我的GCP项目中实现nat网关的最佳方法,我感到有些困惑。

我只是想简单地实现这一点:https://github.com/GoogleCloudPlatform/terraform-google-nat-gateway

我已经把它扔到了main.tf中:

module "nat" {
  source     = "GoogleCloudPlatform/nat-gateway/google"
  region     = "us-central1"
  network    = "default"
  subnetwork = "default"
}

并且我已经将此标签(按照自述文件)添加到我的计算实例中: ${module.nat.routing_tag_regional}

但是,我看到了以下内容(我认为这很有道理):

Error: resource 'google_compute_instance.ds3-build' config: reference to undefined module "nat"

由于我的root / main.tf中有模块,因此实例是通过另一个自定义编写的模块构建的。我是否需要从root / main.tf中输出该值以使其在另一个模块中可用?

root/
├── app1-deploy/
│   ├── main.tf
│   ├── outputs.tf
│   └── variables.tf
├── app2-deploy
│   ├── main.tf
│   ├── outputs.tf
│   └── variables.tf
├── app3-deploy
│   ├── main.tf
│   ├── outputs.tf
│   └── variables.tf
├── creds
│   └── account.json
├── scripts
│   └── startup.sh
├── main.tf
├── outputs.tf
├── variables.tf
└── terraform.tfvars

app1-deploy/main.tf app2-deploy/main.tf等内部设置了机器,并且module "nat"root/main.tf

1 个答案:

答案 0 :(得分:1)

1)计算资源是否独立于Terraform项目?如果是这样,他们将看不到using System; using System.Data.SqlClient; namespace ConsoleApp2 { class Program { static void Main(string[] args) { using ( SqlConnection conn = new SqlConnection) { conn.ConnectionString = "Server=***;Database=***;Trusted_Connection=True;"; } } } } ,因为您的module.nat项目是具有自己状态的另一个项目。

2)如果您的root模块是在nat项目中创建的,那么我将使用计算模块上的变量传递root