为啥需要远程保存 terraform 状态文件?

Posted

技术标签:

【中文标题】为啥需要远程保存 terraform 状态文件?【英文标题】:why is it required to persist terraform state file remotely?为什么需要远程保存 terraform 状态文件? 【发布时间】:2019-07-18 04:44:21 【问题描述】:

我是 terraform 的新手。谁能解释一下

为什么我们需要将 .tfstate 文件保存在本地或远程存储中,

terraform apply 总是用新的基础设施刷新状态文件。

提前致谢。

【问题讨论】:

【参考方案1】:

状态文件跟踪 Terraform 管理的资源,无论是创建它们还是导入它们。 Terraform 的刷新仅检测托管资源的漂移,不会检测您是否在状态文件之外创建了新资源。

如果您丢失了状态,您最终将获得不受 Terraform 管理的孤立资源。如果出于某种原因,您对此感到满意,或者您有其他方式与其他团队成员/CI 共享状态并支持它,那么您就可以了。

当然,使用 Terraform 的远程状态可以巧妙地解决这些问题,因此如果您关心这些事情或认为您将来可能需要(您可能会),则应该使用它。

【讨论】:

谢谢,有道理。【参考方案2】:

我将添加一个更加面向开发人员的视角来帮助理解。

想想你正在使用yarnnpm 做一个NodeJS 应用程序,package.json 就像你的tf 文件,而yarn.lockpackage-lock.json

但不要按字面意思理解,因为 terraform 状态文件具有物理潜在含义。

【讨论】:

以上是关于为啥需要远程保存 terraform 状态文件?的主要内容,如果未能解决你的问题,请参考以下文章

创建谷歌云存储桶并使用相同的 terraform 脚本将 terraform 状态保存到其中?

无法使用“terraform init -reconfigure”将 S3 后端中的 Terraform 远程状态转换为本地状态

加密存储在远程后端(如 GCS 存储桶)上的 Terraform 状态是不是有用?

为啥 terraform 试图重建已经提供的基础设施?

aws cdk 可以提供远程状态吗?

Terraform 从空状态刷新?