首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vpc和vpc对等模块之间的Terraform状态冲突

vpc和vpc对等模块之间的Terraform状态冲突
EN

Stack Overflow用户
提问于 2021-02-05 11:54:24
回答 2查看 265关注 0票数 0

我使用terraform和terragrunt作为我的公司的aws基础设施,一般结构是这样的,我有两个主文件夹,一个是模块,另一个是环境模块,另一个是使用terragrunt的环境文件夹,一个模块是通用vpc基础设施,我有单独的vpc -窥视模块,我为vpc和vpc创建了单独的文件夹,所以它们在s3上有不同的terraform状态,问题是vpc-peering也在创建路由表,当我想对vpc模块进行一些更改时,它删除vpc-peering模块创建的记录,有没有方法将路由表注入vpc模块?我知道我可以将vpc窥视模块移动到vpc中,同时拥有两个模块,但是重写所有的内容需要相当长的时间,我很想知道其他的方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-05 12:57:26

他们不应该都创建路由表。VPC模块应该创建路由表,而VPC对等模块应该将路由添加到这些路由表中。这里的诀窍是,不要在aws_route_table资源中创建任何路由,而是将它们全部创建为单独的aws_route资源。按“aws_route 文档”中的注释

Terraform目前提供了一个独立的路由资源和一个具有在行中定义的路由的路由表资源。此时,您不能与任何路由资源一起使用带有内联路由的路由表。这样做将导致规则设置冲突,并将覆盖规则。

因此,为了在多个模块中定义路由,需要对所有路由定义使用aws_route资源。

票数 1
EN

Stack Overflow用户

发布于 2021-02-05 13:27:34

我不确定您是否使用git作为terraform的源代码,如果是,那么您可以将模块保存在单独的git存储库中,并根据需要调用该模块作为路由表。

例如::

代码语言:javascript
复制
resouces "aws_route" "public_igw_route" {
  source = "git@github.com:user/infra-modules.git//aws-route"
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66062817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档