我正在开发一个由许多服务组成的 Datalake 项目:1VPC(+ 子网、安全组、互联网网关……)、S3 存储桶、EMR 集群、Redshift、ElasticSearch、一些 Lambdas 函数、API Gateway 和 RDS。
我们可以说有些资源是“静态的”,因为它们只会被创建一次并且以后不会改变,例如:VPC + 子网和 S3 存储桶
其他资源将在开发和生产项目生命周期中发生变化。
我的问题是管理项目结构的最佳方法是什么?
我最初是这样开始的:
-modules
.rds
.main.tf
.variables.tf
.output.tf
-emr
-redshift
-s3
-vpc
-elasticsearch
-lambda
-apigateway
.main.tf
.variables.tf
所以这样我只需要做一个terraform apply它就可以部署所有的服务。
第二个选项(我看到一些开发人员使用它)是每个服务都将位于一个单独的文件夹中,然后我们只进入我们想要启动它的服务的文件夹然后执行terraform apply
在这个项目中,我们将有 2 到 4 名开发人员,我们中的一些人只会在单独的资源上工作。
你建议我遵循什么策略?或者,也许您有其他想法和最佳实践?
谢谢你的帮助。