通过 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 中的两个子网之间进行路由?

Terraform AWS 中转网关和 *** 静态路由

如何在 terraform 路由表中引用 AWS 本地前缀列表?

使用 Terraform 在 AWS 上创建 HA NAT

Terraform AWS 客户端***

如何配置 AWS 网络负载均衡器以使用 Terraform 路由 HTTPS 流量?