地形。在应该知道其中一个值时查找 for_each 的组合
Terraform. Finding combinations for for_each when one of value should be got to know
我想用现有图像(快照)中提供的每个区域创建一个 Droplet。但它需要找出每个区域的图像ID。
当需要知道其中一个值时,我不知道如何找到 for_each
的组合。
locals {
regions = toset([
"tor1",
"sgp1",
"sfo3",
"lon1",
"fra1",
"blr1",
"ams3",
"nyc1",
"nyc3",
])
}
获取区域中的图片ID
data "digitalocean_droplet_snapshot" "web-snapshot" {
for_each = local.regions
name_regex = "^s-sites"
region = each.key
most_recent = true
}
此代码无效。
在具有这些区域中的图像 ID 的区域中创建 Droplet。
resource "digitalocean_droplet" "stop-sites" {
for_each = local.regions
name = "${var.server_name}-${each.key}"
image = 102913678 # we should find the ID of image
region = each.key
size = "s-1vcpu-1gb"
ipv6 = true
backups = false
monitoring = true
droplet_agent = true
}
由于 data
源也使用 for_each
,这意味着在局部变量 (regions
中定义的每个区域都将有一个 data
源), 即:
data.digitalocean_droplet_snapshot.web-snapshot["tor1"]
data.digitalocean_droplet_snapshot.web-snapshot["sgp1"]
...
为了访问使用 data
源时导出的图像 ID 的属性,需要进行以下更改:
resource "digitalocean_droplet" "stop-sites" {
for_each = local.regions
name = "${var.server_name}-${each.key}"
image = data.digitalocean_droplet_snapshot.web-snapshot[each.key].id
region = each.key
size = "s-1vcpu-1gb"
ipv6 = true
backups = false
monitoring = true
droplet_agent = true
}
需要注意的一点:对于set
类型的变量,each.key
和each.value
是相同的[1].
[1] https://www.terraform.io/language/meta-arguments/for_each#the-each-object
我想用现有图像(快照)中提供的每个区域创建一个 Droplet。但它需要找出每个区域的图像ID。
当需要知道其中一个值时,我不知道如何找到 for_each
的组合。
locals {
regions = toset([
"tor1",
"sgp1",
"sfo3",
"lon1",
"fra1",
"blr1",
"ams3",
"nyc1",
"nyc3",
])
}
获取区域中的图片ID
data "digitalocean_droplet_snapshot" "web-snapshot" {
for_each = local.regions
name_regex = "^s-sites"
region = each.key
most_recent = true
}
此代码无效。 在具有这些区域中的图像 ID 的区域中创建 Droplet。
resource "digitalocean_droplet" "stop-sites" {
for_each = local.regions
name = "${var.server_name}-${each.key}"
image = 102913678 # we should find the ID of image
region = each.key
size = "s-1vcpu-1gb"
ipv6 = true
backups = false
monitoring = true
droplet_agent = true
}
由于 data
源也使用 for_each
,这意味着在局部变量 (regions
中定义的每个区域都将有一个 data
源), 即:
data.digitalocean_droplet_snapshot.web-snapshot["tor1"]
data.digitalocean_droplet_snapshot.web-snapshot["sgp1"]
...
为了访问使用 data
源时导出的图像 ID 的属性,需要进行以下更改:
resource "digitalocean_droplet" "stop-sites" {
for_each = local.regions
name = "${var.server_name}-${each.key}"
image = data.digitalocean_droplet_snapshot.web-snapshot[each.key].id
region = each.key
size = "s-1vcpu-1gb"
ipv6 = true
backups = false
monitoring = true
droplet_agent = true
}
需要注意的一点:对于set
类型的变量,each.key
和each.value
是相同的[1].
[1] https://www.terraform.io/language/meta-arguments/for_each#the-each-object