Список всех экземпляров, созданных модулем - PullRequest
0 голосов
/ 16 октября 2018

У меня есть несколько вызовов модуля, которые выглядят примерно так:

  1 module "gcpue4a1" {
  2   source = "../../../modules/pods"
  3
  4 }

, где модуль создает экземпляры, записи DNS и т. Д.

locals {
  gateway_name = "gateway-${var.network_zone}-${var.environment}-1"
}

resource "google_compute_instance" "gateway" {
  name                      = "${local.gateway_name}"
  machine_type              = "n1-standard-8"
  zone                      = "${var.zone}"
  allow_stopping_for_update = true
}

Как выполнить итерациюсписок всех экземпляров, которые были созданы с помощью этого модуля.Могу ли я сделать это с помощью тегов или меток экземпляра?

В конце я хочу иметь возможность перебирать список для экспорта в файл инвентаризации.Но я просто не уверен, как мне это сделать, когда мои ресурсы заключены в модули.

С помощью terraform show я ясно вижу структуру переменных.

➜  gcp-us-east4 git:(integration) ✗ terraform show | grep google_compute_instance.gateway -n1
640-  zone = us-east4-a
641:module.screencast-gcp-pod-gcpue4a1-food.google_compute_instance.gateway:
642-  id = gateway-gcpue4a1-food-1
--
--
991-  zone = us-east4-a
992:module.screencast-gcp-pod-gcpue4a2-food.google_compute_instance.gateway:
993-  id = gateway-gcpue4a2-food-1
--
--
1342-  zone = us-east4-a
1343:module.screencast-gcp-pod-gcpue4a3-food.google_compute_instance.gateway:
1344-  id = gateway-gcpue4a3-food-1
--
--
1693-  zone = us-east4-a
1694:module.screencast-gcp-pod-gcpue4a4-food.google_compute_instance.gateway:
1695-  id = gateway-gcpue4a4-food-1

Инвентарь etcd прекрасно работает, когда я явно говорю, какой узел мне нужен.Общая часть инвентаря ниже этого не делает, и я не уверен, как это исправить.

 10   ##Create ETCD Inventory
 11   provisioner "local-exec" {
 12     command =  "echo \"\n[etcd]\n${google_compute_instance.k8s-master.name} ansible_s    sh_host=${google_compute_instance.k8s-master.network_interface.0.address}\" >> kubesp    ray-inventory"
 13   }
 14
 15   ##Create Nodes Inventory
 16   provisioner "local-exec" {
 17     command =  "echo \"\n[kube-node]\" >> kubespray-inventory"
 18   }
 19 #  provisioner "local-exec" {
 20 #    command =  "echo \"${join("\n",formatlist("%s ansible_ssh_host=%s", google_compu    te_instance.gateway.*.name, google_compute_instance.gateway.*.network_interface.0.add    ress))}\" >> kubespray-inventory"
 21 #  }

➜  gcp-us-east4 git:(integration) ✗ terraform apply

Error: resource 'null_resource.ansible-provision' provisioner local-exec (#4): unknown resource 'google_compute_instance.gateway' referenced in variable google_compute_instance.gateway.*.id

1 Ответ

0 голосов
/ 16 октября 2018

вы можете убедиться, что каждый модуль добавляет метку , соответствующую этому модулю, и затем вы можете использовать список вычислений gcloud и использовать фильтр, чтобы показывать только те, у которых есть определенный ярлык.

...