我使用terraform和terragrunt作为我的公司的aws基础设施,一般结构是这样的,我有两个主文件夹,一个是模块,另一个是环境模块,另一个是使用terragrunt的环境文件夹,一个模块是通用vpc基础设施,我有单独的vpc -窥视模块,我为vpc和vpc创建了单独的文件夹,所以它们在s3上有不同的terraform状态,问题是vpc-peering也在创建路由表,当我想对vpc模块进行一些更改时,它删除vpc-peering模块创建的记录,有没有方法将路由表注入vpc模块?我知道我可以将vpc窥视模块移动到vpc中,同时拥有两个模块,但是重写所有的内容需要相当长的时间,我很想知道其他的方法。
发布于 2021-02-05 12:57:26
他们不应该都创建路由表。VPC模块应该创建路由表,而VPC对等模块应该将路由添加到这些路由表中。这里的诀窍是,不要在aws_route_table资源中创建任何路由,而是将它们全部创建为单独的aws_route资源。按“aws_route 文档”中的注释
Terraform目前提供了一个独立的路由资源和一个具有在行中定义的路由的路由表资源。此时,您不能与任何路由资源一起使用带有内联路由的路由表。这样做将导致规则设置冲突,并将覆盖规则。
因此,为了在多个模块中定义路由,需要对所有路由定义使用aws_route资源。
发布于 2021-02-05 13:27:34
我不确定您是否使用git作为terraform的源代码,如果是,那么您可以将模块保存在单独的git存储库中,并根据需要调用该模块作为路由表。
例如::
resouces "aws_route" "public_igw_route" {
source = "git@github.com:user/infra-modules.git//aws-route"
}https://stackoverflow.com/questions/66062817
复制相似问题