地形文件夹结构 - 模块与文件



不确定这个问题会有一个正确或错误的答案,但我只是对人们如何在现实世界中管理Terraform感兴趣?就您使用模块、不同的环境和协作而言。

目前,我们计划建立一个生产、开发和测试环境。都相似。

现在,我已经以一种定义AWS各个组件的方式制作了我的terraform文件,所以说一个,VPC,IAM,EC2,监控(CloudWatch + CloudTrail + CloudConfig(等。并且有一个变量文件和 .tfvar 用于上述文件,因此这些文件是可移植的(所有环境都相同(。因此,如果您需要更改某些内容,则全部集中在一个地方。还意味着如果我们运行一个特定的项目,我可以创建一个定义项目所有资源的 tf 文件并将其放入,然后在完成后将其删除。

每个环境在我们的 Terraform 服务器上都有自己的文件夹结构。

这是不是太简单了?我一直在看模块。

还有人有与Terraform合作的经验,就像在不同的团队中一样?我一直在寻找像亚特兰蒂斯这样的东西来绑定到 GitHub 上,所以任何更改都需要获得批准。但同时,使用正确的 IAM 角色,我可以限制 Terraform 可以更改的内容。

就像我说的,可能不是一个错误的正确答案,只是对人们如何管理地形和他们的经历感兴趣。

谢谢

我的答案只是一个用例...

我们将terraform用于为多个客户部署的应用程序,每个客户都具有较小的特定配置功能。

我们只有一个 CVS 存储库。我们不使用 CVS 分支机制。

对于每个文件夹,我们至少有远程状态,可以在开发人员之间共享状态。

  • 我们正在使用一个具有远程状态的全局文件夹,以便在客户配置之间共享状态
  • 我们为每个客户使用一个文件夹,并为每个客户的每个上下文使用工作区(以前的环境((产品:蓝色/绿色,阶段(
  • 对于所有客户共享的通用基础设施块,我们使用模块

我们主要使用变量来减少每个客户文件夹中特定文件的数量。

希望这对您有所帮助...

最新更新