【发布时间】:2021-02-20 09:51:57
【问题描述】:
我是 terraform 的新手,我想知道路由表关联,如何根据以下条件创建关联路由表子网关联:
我有路由表 A、B、C 我有子网 D、E、F、G、H、I、J、K 我希望路由表 A 与子网 D、E 相关联 我希望路由表 B 与子网 F、G、H、I 相关联 我希望路由表 C 与子网 J、K 相关联
locals {
route_tables = flatten([
for route_table_details in aws_route_table.NETWORK-PROD-RT-TEST : [
for subnet_details in aws_subnet.NETWORK-PROD-SUBNET-TEST : {
##Pseudo code ###
if route_table_details.tags.Names == "A" and subnet_details.tags.Names == ("D" or "E"):
route_table_id = route_table_details.id
subnet_id = subnet_details.id
elif route_table_details.tags.Names == "B" and subnet_details.tags.Names == ("J" or "K"):
route_table_id = route_table_details.id
subnet_id = subnet_details.id
elif route_table_details.tags.Names == "C" and subnet_details.tags.Names == ("F, G, H, I):
route_table_id = route_table_details.id
subnet_id = subnet_details.id
##Pseudo code ###
}
]
])
}
resource "aws_route_table_association" "a" {
count = length(local.route_tables)
subnet_id = local.route_tables[count.index].subnet_id
route_table_id = local.route_tables[count.index].route_table_id
}
【问题讨论】:
-
什么是
aws_route_table.NETWORK-PROD-RT-TEST、aws_subnet.NETWORK-PROD-SUBNET-TEST?你有他们的示例代码吗? -
这基本上是 AWS 中的 3 个路由表和 8 个子网。我不能在这里分享这些数据,但它们只是像 `resource "aws_route_table" "NETWORK-PROD-RT-TEST" { vpc_id = something route { cidr_block = "something" gateway_id = "something" transit_gateway_id = "something" } 标签之类的名称= {名称=“某事”访问=“某事”}}`
-
为什么不创建三个
local.route_tablesA、local.route_tablesB和local.route_tablesB以及三个对应的aws_route_table_association?那么这样一个多条件的复杂for循环,阅读、调试、修改和维护会容易得多吗? -
路由表有6个,子网有16个,文件会过长
标签: amazon-web-services terraform