Terraform 远程状态 - 状态文件位置
Terraform Remote State - state file location
我将 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#example-configuration
[2] https://www.terraform.io/docs/language/settings/backends/configuration.html#initialization.
这引出了一个问题,如果您需要 destroy/rebuild 您的状态 bucket/DDB 怎么办?
使用存储桶和 DDB 手动配置严格控制的主帐户是一种更明智的方法。从那里你有一个基础来创建一个帐户自动售货机来设置带有状态桶、DDB、基线配置和 IAM 等的新帐户。
我将 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#example-configuration
[2] https://www.terraform.io/docs/language/settings/backends/configuration.html#initialization.
这引出了一个问题,如果您需要 destroy/rebuild 您的状态 bucket/DDB 怎么办?
使用存储桶和 DDB 手动配置严格控制的主帐户是一种更明智的方法。从那里你有一个基础来创建一个帐户自动售货机来设置带有状态桶、DDB、基线配置和 IAM 等的新帐户。