Terraform: неизвестный модуль ссылается - PullRequest
0 голосов
/ 01 декабря 2018

Надеюсь, у всех будут отличные выходные.

Я немного озадачен тем, как лучше всего реализовать шлюз nat в моем проекте GCP.

Я просто хотел реализовать это: https://github.com/GoogleCloudPlatform/terraform-google-nat-gateway

Я добавил это в свой main.tf:

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

И я добавил этот тег (согласно readme) в мои экземпляры вычислений: ${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 голосов
/ 03 декабря 2018

1) Являются ли вычислительные ресурсы отдельными проектами Terraform?Если это так, они не могут видеть module.nat, потому что ваш root проект - это другой проект с собственным состоянием.

2) Если ваш nat модуль создан в проекте root, я передам ${module.nat.routing_tag_regional}, используя переменную в ваших вычислительных модулях.

...