【发布时间】:2021-11-25 21:00:09
【问题描述】:
我有一个aws_route 资源,我想用新路由更新列表中的所有路由表。以下是相关代码:
resource "aws_route" "private_route" {
for_each = data.aws_route_tables.private_route_tables.ids
route_table_id = each.key
destination_cidr_block = var.tgw_destination_cidr_block
transit_gateway_id = module.tgw.ec2_transit_gateway_id
}
当变量tgw_destination_cidr_block 中定义了一个CIDR 时,上述代码可以正常工作,因为aws_route 需要destination_cidr_block 属性的字符串类型。
tgw_destination_cidr_block = "10.255.160.0/20"
现在我想在这个变量中添加多个 CIDR 范围,并对其进行迭代。
tgw_destination_cidr_block = ["10.255.160.0/20", "10.255.176.0/22"]
为了在每个路由表中创建两条新路由。所以,我想我需要变量中的字符串列表并遍历 CIDR 范围列表。
知道怎么做吗?
【问题讨论】:
-
您需要在路由表和 CIDR 上都有一个嵌套循环,因此这需要您首先使用
setproduct创建这两个列表/集的产品。 stackoverflow.com/a/62565413/2291321 提供了一个很好的例子来说明如何做到这一点。 -
如果以上链接的答案解决了您的问题,那就太好了,我们可以将其作为副本关闭,以改善人们找到该答案的方式。如果没有,您能否编辑您的问题,以显示您从该答案中尝试了哪些对您不起作用的答案,以便人们可以帮助缩小任何问题的范围?
-
谢谢@ydaetskcoR。我使用了下面提供的解决方案,因为它是指我的用例。但是你发布的链接也非常接近这个。
标签: amazon-web-services terraform terraform-provider-aws