通过 Terraform 在 AWS 上进行路由传播
Posted
技术标签:
【中文标题】通过 Terraform 在 AWS 上进行路由传播【英文标题】:Route Propagation on AWS via Terraform 【发布时间】:2019-04-04 07:30:03 【问题描述】:我的公司使用 AWS 作为云提供商,使用 Terraform 将我们的基础设施作为代码片段。我需要改变我们在 AWS 中的流量路由方式。我们目前有 1 个 NAT 网关。因此,如果此活动的可用区发生故障,我们将失去来自我们私有子网上的实例的外部连接。
我创建了 2 个额外的 NAT GW。每个 AZ 一个。我已经通过 Terraform 完成了所有这些工作,但是在路由方面我遇到了一个绊脚石。
我创建了这种类型的设置,您可以在其中为每个 AZ 中的私有子网和公共子网创建一个路由表
NAT GW Architecture and routing
我们有 Direct Connect 并使用 BGP 向 AWS 宣传我们的数据中心网络。我似乎无法弄清楚如何在私有子网路由表上启用路由传播,以便将我们的本地网络填充到这些路由表中。
resource "aws_route_table" "private-subnet-a-routes"
vpc_id = "$aws_vpc.foo.id"
propogating_vgws "$aws_vgw.foo.id"
我试过了,但得到以下错误
资源“aws_route_table.private-subnet-a-routes”配置:变量 aws_vgw.foo.id 中引用的未知资源“aws_vgw.foo”有谁知道如何设置要在您的 VPC 中的主 VGW 的路由表上传播的路由?
提前致谢
克里斯
【问题讨论】:
【参考方案1】:不确定是否能回答您的问题,但可能会给您一些想法:
resource "aws_route" "nat"
count = "$var.num_availability_zones"
route_table_id = "$element(aws_route_table.private.*.id, count.index)"
destination_cidr_block = "0.0.0.0/0"
nat_gateway_id = "$element(aws_nat_gateway.nat.*.id, count.index)"
depends_on = ["aws_internet_gateway.main", "aws_route_table.private"]
https://www.terraform.io/docs/providers/aws/d/route.html
【讨论】:
以上是关于通过 Terraform 在 AWS 上进行路由传播的主要内容,如果未能解决你的问题,请参考以下文章
如何在带有 Terraform 的 AWS VPC 中的两个子网之间进行路由?