Terraform 如何在SVN中存储地形状态?

Terraform 如何在SVN中存储地形状态?,terraform,Terraform,Terraform是否允许在SVN中存储状态文件?如果Terraform不直接支持,是否存在任何第三方/开源选项?使用Terraform时,通常不会将Terraform状态存储在驱动它的配置的同一版本控制存储库中,因为在Terraform中使用版本控制的预期工作流程是首先审查和提交建议的更改,然后才从主分支将更改应用到实际的基础架构 为了理解为什么考虑应用程序的主代码与其数据库之间的关系可能会有所帮助。我们通常不会将web应用程序的主数据库与代码一起存储在版本控制存储库中,因为我们与这两个应用程

Terraform是否允许在SVN中存储状态文件?如果Terraform不直接支持,是否存在任何第三方/开源选项?

使用Terraform时,通常不会将Terraform状态存储在驱动它的配置的同一版本控制存储库中,因为在Terraform中使用版本控制的预期工作流程是首先审查和提交建议的更改,然后才从主分支将更改应用到实际的基础架构

为了理解为什么考虑应用程序的主代码与其数据库之间的关系可能会有所帮助。我们通常不会将web应用程序的主数据库与代码一起存储在版本控制存储库中,因为我们与这两个应用程序的交互方式不同:许多开发人员可以同时处理应用程序源代码并提出更改建议,我们的版本控制系统通常能够将这些单独的方案合并在一起以减少冲突,但对于应用程序的中央数据库,更常见的是使用锁,这样两个编写器就不会试图同时更改相同的数据(或互连的数据)

这样,Terraform状态大致类似于Terraform的“后端数据库”。当在团队设置中使用Terraform时,您通常会选择其中一个远程存储状态并支持锁定的,然后使用该特定Terraform配置的任何人都会发现Terraform在进行任何远程系统修改之前会取出一个锁,在整个工作过程中保持该锁,然后在释放锁之前将新更新的状态写入后端


尽管您特别询问了Subversion,但我这里的建议适用于所有版本控制系统。版本控制是保存Terraform模块源代码的好地方,但它不是保存Terraform状态的好地方。

svn和Terraform是一个非常不寻常的组合,我以前从未遇到过这样的人。您可以将状态文件存储在任何您想要的位置,但是使用在线存储(如S3或Azure存储)的远程状态比直接版本控制更可取。