terraform 循环遍历 ids 列表并从中生成数据块(并再次访问它)
terraform loop through ids list and generate data blocks from it (and access it again)
是否可以有一个 terraform id 列表(作为字符串),如下所示:
locals {
secrets = [
"cloud.secret.id1",
"cloud.secret.id2",
"cloud.secret.id3",
]
}
并为所有这些 ID 创建动态数据,
data "google_secret_manager_secret_version" "basic" {
for_each = toset(locals.secrets)
secret = each.key
}
然后想办法再次访问数组中每个资源中的 属性?
使用 for_each
将导致 data.google_secret_manager_secret_version.basic
成为一个 map,其中的键来自您的 locals.secrets
.
因此您可以通过引用地图中的各个元素来访问它,例如:
data.google_secret_manager_secret_version.basic["cloud.secret.id2"].secret_data
或在某些资源中使用 for_each
:
resourece "google_xxxx" "test" {
for_each = toset(locals.secrets)
secret = data.google_secret_manager_secret_version.basic[each.key].secret_data
}
是否可以有一个 terraform id 列表(作为字符串),如下所示:
locals {
secrets = [
"cloud.secret.id1",
"cloud.secret.id2",
"cloud.secret.id3",
]
}
并为所有这些 ID 创建动态数据,
data "google_secret_manager_secret_version" "basic" {
for_each = toset(locals.secrets)
secret = each.key
}
然后想办法再次访问数组中每个资源中的 属性?
使用 for_each
将导致 data.google_secret_manager_secret_version.basic
成为一个 map,其中的键来自您的 locals.secrets
.
因此您可以通过引用地图中的各个元素来访问它,例如:
data.google_secret_manager_secret_version.basic["cloud.secret.id2"].secret_data
或在某些资源中使用 for_each
:
resourece "google_xxxx" "test" {
for_each = toset(locals.secrets)
secret = data.google_secret_manager_secret_version.basic[each.key].secret_data
}