Как получить доступ к выводам из подхода "каждый облачный сервис - папка" в 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 переменная, чтобы получить его.

Другие вопросы по тегам