Terraform远程状态-状态文件位置



我使用Terraform与AWS和S3/Dynamo为我们所有模块的远程状态。

但是,您将在哪里保存模块的状态文件,在哪里创建S3桶和DynamoDB(用于远程状态)?

听起来像"鸡还是蛋";问题。我是否应该将状态文件上传到GIT存储库,即使我不应该将它存储在那里?

通常情况下,这个状态不再被触及,但如果所有的开发人员都能访问这个状态,那就更干净了,不是吗?你的最佳实践是什么?

你不应该将状态文件上传到任何存储库。这是一个先有鸡还是先有蛋的问题。首先必须部署S3和DynamoDB,后者将创建一个本地状态文件。然后,由于您有一个S3桶,您可以添加后端配置块[1]。接下来应该是terraform init,它将询问您是否要将状态迁移到远程后端[2],就是这样。之后,状态文件将保存在S3桶中。

更多信息在这里:

[1] https://www.terraform.io/docs/language/settings/backends/s3.html示例配置

[2] https://www.terraform.io/docs/language/settings/backends/configuration.html初始化。

这就引出了一个问题,如果需要销毁/重建状态桶/DDB会发生什么?

让一个严格控制的主帐户手动配置一个bucket和DDB是一种更明智的方法。从那里你有一个基础来创建一个帐户自动售货机,以设置新的帐户与状态桶,DDB,基线配置和IAM等。

最新更新