Как получить доступ к выводам из подхода "каждый облачный сервис - папка" в Terraform
Итак, у меня есть структура папок 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
У меня проблема в том, что я не знаю, как, например, получить доступ к собственной связи модуля VPC, которую я устанавливаю в качестве вывода, из модуля GKE.
У каждого примера, который я вижу, есть файл 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}"
}
1 ответ
Вам нужно передать выходное значение как переменную внутри модуля, к которому вы хотите получить доступ:
module "my_vpc":
....
module "gke":
source = "./modules/gke
vpc_id = module.my_vpc.id
В вашем модуле gke вам понадобится vpc_id
переменная, чтобы получить его.