как распечатать частный IP из модуля, созданного с помощью terraform-google-modules

Я создал несколько экземпляров gcp, используя модуль terraform:

module "instance_template" {
  source = "terraform-google modules/vm/google//modules/instance_template"
...
}
module "compute_instance" {
  source             = "terraform-google- 
   modules/vm/google//modules/compute_instance"
  num_instances      = 4
  ...
}

тогда как мне получить и вывести частный ip этих 4 экземпляров после запуска terraform apply?

2 ответа

Решение

Этот модуль не имеет вывода в виде частных IP-адресов. Он имеет только выходы instance_self_links и available_zones

Лучше использовать ресурсный блок google_compute_instance_template и google_compute_instance_from_template

Затем вы можете использовать блок вывода для получения всех 4 частных IP-адресов.

output {
value = google_compute_instance_from_template.instances[*].network_ip
}

Выходные данные модуля <tcode id="4298418"></tcode> из которого вы можете получить IP-адреса.

Ниже приведен пример получения IP-адресов всех созданных экземпляров.

      output "vm-ips" {
  value = flatten(module.compute_instance[*].instances_details.*.network_interface.0.network_ip)
}

Выход:

      vm-ips = [
  "10.128.0.14",
  "10.128.0.15",
  "10.128.0.16",
]

В вы повторили модуль с for-each для создания групп экземпляров с разными параметрами.

  • Скажем, 2 экземпляра, каждый с именем хоста, начинающимся с некоторого префикса, в 2 группах

Затем вы можете получить все их IP-адреса следующим образом:

      output "vm-ips" {
  value = flatten([
     for group in module.compute_instance[*] : [
      for vm_details in group: [
        for detail in vm_details.instances_details: {
          "name" = detail.name
          "ip" = detail.network_interface.0.network_ip
        }
      ]
     ]
  ])
}

Выход:

      vm-ips = [
  {
    "ip" = "10.128.0.17"
    "name" = "w1-001"
  },
  {
    "ip" = "10.128.0.18"
    "name" = "w1-002"
  },
  {
    "ip" = "10.128.0.20"
    "name" = "w2-001"
  },
  {
    "ip" = "10.128.0.19"
    "name" = "w2-002"
  },
]
Другие вопросы по тегам