Terraform 路由表强制每次应用新资源

Posted

技术标签:

【中文标题】Terraform 路由表强制每次应用新资源【英文标题】:Terraform Route Table forcing new resource every apply 【发布时间】:2018-08-16 21:12:35 【问题描述】:

如果您知道答案,请提前致谢!

当我为跨帐户 vpc 对等连接添加多个子网的路由时,它会强制每次应用一个新资源

resource "aws_route" "route" 
  count                     = "$var.first_route_table_count"
  route_table_id            = "$element(var.first_route_table_ids, count.index)"
  destination_cidr_block    = "$data.aws_vpc.second_vpc.cidr_block"
  vpc_peering_connection_id = "$aws_vpc_peering_connection.peer.id"


resource "aws_route" "second_account_route" 
  provider                  = "aws.second_account"
  count                     = "$var.second_route_table_count"
  route_table_id            = "$element(var.second_route_table_ids, count.index)"
  destination_cidr_block    = "$data.aws_vpc.first_vpc.cidr_block"
  vpc_peering_connection_id = "$aws_vpc_peering_connection.peer.id"

【问题讨论】:

你是如何定义你的路由表的?并且路由表会同时应用吗? 【参考方案1】:

如果有人在未来遇到这个 Terraform 怪癖,这就是解决方案..

我开始意识到,因为我同时定义了一个路由表和一个路由,所以您以后不能再添加另一个路由。

解决方案是创建一个没有路由的路由表,然后单独添加所有其他路由。

【讨论】:

他们在他们的文档中排序告诉你这一点,不是很清楚。我刚碰到这个。您需要创建一个没有“内联”routeaws_route_table 资源,然后创建多个 aws_routes 来更新它

以上是关于Terraform 路由表强制每次应用新资源的主要内容,如果未能解决你的问题,请参考以下文章

AWS on Terraform - 如何避免“强制使用新资源”

如何使用 terraform 在 OCI 中的现有默认路由表中添加新规则

Terraform删除路由表,然后在第二次运行时将其添加(无更改)。错误或我缺少什么吗?

Terraform AWS 客户端***

Terraform:运行空资源后如何强制资源更新?

使用 Terraform 在 AWS 上创建 HA NAT