如何在 Terraform 中的资源属性块上使用 `for_each`?
How to use `for_each` on resource attribute blocks in Terraform?
我正在尝试在 OCI 中为单个路由创建多个路由规则 table。但是,for_each 元参数仅适用于资源本身,不适用于相关属性。伪代码示例:
resource "oci_core_route_table" "example-rt" {
compartment_id = oci_identity_compartment.example-compartment.id
vcn_id = oci_core_vcn.example-vcn.id
route_rules {
for_each = {
# Route dest CIDR
dest1 = var.dest1-cidr
dest2 = var.dest2-cidr
dest3 = var.dest3-cidr
}
network_entity_id = oci_core_internet_gateway.example-igw.id
destination = each.value
destination_type = "CIDR_BLOCK"
}
我显然可以在 OCI 中指向并单击以创建这些规则,但我希望这可以通过 Terraform 完成。
谢谢。
您可以使用 dynamic
block:
resource "oci_core_route_table" "example-rt" {
compartment_id = oci_identity_compartment.example-compartment.id
vcn_id = oci_core_vcn.example-vcn.id
dynamic "route_rules" {
for_each = toset([var.dest1-cidr, var.dest2-cidr, var.dest3-cidr])
content {
network_entity_id = oci_core_internet_gateway.example-igw.id
destination = route_rules.key
destination_type = "CIDR_BLOCK"
}
}
}
我正在尝试在 OCI 中为单个路由创建多个路由规则 table。但是,for_each 元参数仅适用于资源本身,不适用于相关属性。伪代码示例:
resource "oci_core_route_table" "example-rt" {
compartment_id = oci_identity_compartment.example-compartment.id
vcn_id = oci_core_vcn.example-vcn.id
route_rules {
for_each = {
# Route dest CIDR
dest1 = var.dest1-cidr
dest2 = var.dest2-cidr
dest3 = var.dest3-cidr
}
network_entity_id = oci_core_internet_gateway.example-igw.id
destination = each.value
destination_type = "CIDR_BLOCK"
}
我显然可以在 OCI 中指向并单击以创建这些规则,但我希望这可以通过 Terraform 完成。
谢谢。
您可以使用 dynamic
block:
resource "oci_core_route_table" "example-rt" {
compartment_id = oci_identity_compartment.example-compartment.id
vcn_id = oci_core_vcn.example-vcn.id
dynamic "route_rules" {
for_each = toset([var.dest1-cidr, var.dest2-cidr, var.dest3-cidr])
content {
network_entity_id = oci_core_internet_gateway.example-igw.id
destination = route_rules.key
destination_type = "CIDR_BLOCK"
}
}
}