使用 Terraform 在 AWS 上创建 HA NAT

Posted

技术标签:

【中文标题】使用 Terraform 在 AWS 上创建 HA NAT【英文标题】:Creating HA NAT on AWS with Terraform 【发布时间】:2015-10-28 14:28:37 【问题描述】:

在 AWS 中构建 HA NAT 的两种常见策略是:

“路由接管”,实例更新路由表以指向自身。 “ENI 附加”实例将 ENI 附加到自身,并且路由表设置为将默认路由指向 ENI。

这两种方法都涉及更新资源配置(即路由表或 ENI)的实例,该实例由“心跳脚本”触发或由自动缩放组创建。

这适用于 CloudFormation,因为对堆栈的更新不会覆盖在此之后发生的这些更改。 Terraform 并非如此。

Terraform 将检测到任一资源的配置已更改,并将尝试通过删除在 Terraform 之外发生的任何更改来“修复配置”。

我明白这里的理念,但它阻止了使用通用策略部署 HA NAT。

那么,有没有人知道如何在 Terraform 的运作范围内完成 HA NAT 解决方案?

谢谢, 乔

【问题讨论】:

【参考方案1】:

作为此问题的更新,Terraform 现在支持 managed NAT gateways 和 aws_nat_gateway resource

【讨论】:

【参考方案2】:

从 0.6.2 版开始,terraform 不再尝试删除带外附加的 ENI 的附件 https://github.com/hashicorp/terraform/pull/2943

【讨论】:

以上是关于使用 Terraform 在 AWS 上创建 HA NAT的主要内容,如果未能解决你的问题,请参考以下文章

Terraform aws - 无法使用 terraform 脚本创建 AWS SFTP 服务器

在 AWS RDS 集群实例上使用 Terraform 预置多个逻辑数据库

使用 Terraform 创建 AWS MySQL RDS 实例时出错

通过 Terraform 在 AWS 上进行路由传播

在创建 aws_dms_replication_task 资源-terraform 中使用“cdc_start_position”参数时出错

在 AWS 中使用 Terraform 创建角色,并附加 SAML 提供程序