вывод всех внешних IP-адресов целевого пула виртуальных машин или пула серверных служб

Я терраформировал виртуальные машины и управлял ими в gcp / gce google_compute_target_pool с помощью google_compute_region_instance_group_manager

resource "google_compute_target_pool" "my-target-pool" {
  name             = "${local.pre}-my-target-pool"
}

data "google_compute_region_instance_group" "my-group_data" {
  self_link = "${google_compute_region_instance_group_manager.my-group-manager.instance_group}"
}

теперь я хочу output все внешние IP-адреса, которые есть у каждого экземпляра (и у них есть внешний IP-адрес, который я проверял!)

Я пробовал несколько вещей, но ни один из них не работает, так как terraform всегда жалуется, что у какого-то объекта нет такого атрибута.

вот несколько попыток:

output jumpbox_ip {
  # value = "${google_compute_region_instance_group_manager.my-group-manager.instance_group.instances.*.network_interface.0.access_config.0.nat_ip}"
  # value = "${google_compute_region_instance_group.my-group_data.instances.*....
  value = "${google_compute_target_pool.my-target-pool.instances.*....}"
}

как я могу вывести список всех IP-адресов всех виртуальных машин в целевом пуле (или серверной службе в случае внутреннего LB?)


person Dirk Hoffmann    schedule 13.03.2019    source источник
comment
Я не вижу IP-адрес в качестве экспортируемого атрибута ни для ресурса, ни для данных в соответствии с документацией. Возможно, вы не сможете сделать это изначально.   -  person Matt Schuchard    schedule 13.03.2019


Ответы (1)


Возможно, вы захотите попробовать google_compute_instance ресурс данных для каждого экземпляра:

data "google_compute_instance" "instances" {
  count = "${length(data.google_compute_region_instance_group.my-group_data.instances)}"

  name = "${data.google_compute_region_instance_group.my-group_data.instances[count.index]}"
}

output "instance_ids" {
  value = "${data.google_compute_instance.instances.*.network_interface.0.access_config.0.nat_ip }"
}
person Aleksi    schedule 17.03.2019
comment
ну "google_compute_region_instance_group_manager" использует "google_compute_instance_template", чтобы преобразовать их в "google_compute_region_backend_service" ... вопрос будет в том, как получить "google_computer_instance" из этого "google_compute_region_backend_service"!? - person Dirk Hoffmann; 21.03.2019