У меня есть следующий модуль, который создает подсети в GCP:
/******************************************
Subnet configuration
*****************************************/
resource "google_compute_subnetwork" "subnetwork" {
count = "${length(var.subnets)}"
name = "${lookup(var.subnets[count.index], "subnet_name")}"
ip_cidr_range = "${lookup(var.subnets[count.index], "subnet_ip")}"
region = "${lookup(var.subnets[count.index], "subnet_region")}"
private_ip_google_access = "${lookup(var.subnets[count.index], "subnet_private_access", "false")}"
enable_flow_logs = "${lookup(var.subnets[count.index], "subnet_flow_logs", "false")}"
network = "${google_compute_network.network.name}"
project = "${var.project_id}"
secondary_ip_range = "${var.secondary_ranges[lookup(var.subnets[count.index], "subnet_name")]}"
}
data "google_compute_subnetwork" "created_subnets" {
count = "${length(var.subnets)}"
name = "${element(google_compute_subnetwork.subnetwork.*.name, count.index)}"
region = "${element(google_compute_subnetwork.subnetwork.*.region, count.index)}"
project = "${var.project_id}"
}
Мой вывод выглядит так:
output "subnets_self_links" {
value = "${google_compute_subnetwork.subnetwork.*.self_link}"
description = "The self-links of subnets being created"
}
Этот вывод создает список подсетей.
Мне нужно иметь возможность извлечь следующее, выполнив поиск по имени подсети. В данном случае это «подсеть-01»:
subnetwork = "https://www.googleapis.com/compute/v1/projects/abc-network-hub/regions/us-central1/subnetworks/subnet-01"
Как мне создать свой поиск для поиска по тексту?
subnetwork = "${module.test-vpc.subnets_self_links}"
Выше возвращается:
"module.compute-o057qdb2-l30.var.subnetwork: переменная подсеть в
модуль compute-o057qdb2-l30 должен иметь тип string, получил список "
subnetwork = "${lookup(module.test-vpc.subnets_self_links, "subnet-01, 0")}"
Выше возвращается:
- module.compute-o057qdb2-l30.var.subnetwork: В столбце 3, строка 1: lookup: аргумент 1 должен быть картой типов, получен список типов в:
$ {lookup (module.test-vpc.subnets_self_links, "subnet-01, 0")}
subnetwork = "${module.test-vpc.subnets_self_links[0]}"
Выше работает, потому что создана только одна подсеть, и я могу ссылаться на индекс списка. Мне нужно иметь возможность искать по имени подсети. Я чувствую, что должен быть в состоянии извлечь значения из «данных».
Это модуль, который я использую: https://github.com/terraform-google-modules/terraform-google-network