gpt4 book ai didi

git - 我应该将 .tfstate 文件提交到 Git 吗?

转载 作者:行者123 更新时间:2023-12-03 05:35:45 25 4
gpt4 key购买 nike

我对是否将 .tfstate 文件提交到 Git 的问题有点困惑。 Terraform documentation状态:

Terraform also put some state into the terraform.tfstate file by default. This state file is extremely important; it maps various resource metadata to actual resource IDs so that Terraform knows what it is managing. This file must be saved and distributed to anyone who might run Terraform. We recommend simply putting it into version control, since it generally isn't too large.

现在,另一方面, Best practices when using Terraform 上已接受并投票的答案状态:

Terraform config can be used to provision many boxes on different infrastructure, each of which could have a different state. As it can also be run by multiple people this state should be in a centralised location (like S3) but not git.

(强调的是原作者,不是我)

谁是对的,如果是,为什么?

最佳答案

不在 Git 中存储 .tfstate 文件有几个原因:

  1. 运行 terraform apply 后,您可能会忘记提交和推送更改,因此您的队友将拥有过时的 .tfstate 文件。此外,在不对这些状态文件进行任何锁定的情况下,如果两个团队成员同时在相同的 .tfstate 文件上运行 Terraform,您可能会覆盖彼此的更改。您可以通过以下方法解决这两个问题:a) 使用 Terraform remote state.tfstate 文件存储在 S3 存储桶中,每次运行 terraform apply 时,它都会自动推送/pull .tfstate 文件,并且 b) 使用类似 terragrunt 的工具为您的 .tfstate 文件提供锁定。
  2. .tfstate 文件可能包含 secret 。例如,如果您使用 aws_db_instance资源时,您必须指定数据库密码,Terraform 将以明文形式将其存储在 .tfstate 文件中。对于 Terraform 来说,这从一开始就是一种不好的做法,在版本控制中存储未加密的 secret 只会让情况变得更糟。至少,如果您将 .tfstate 文件存储在 S3 中,您可以启用静态加密(SSL 提供动态加密)并配置 IAM 策略来限制谁有权访问。这离理想还很远,我们必须看看是否可以看到 open issue discussing this problem关于它永远得到解决。

有关更多信息,请查看How to manage Terraform state Terraform: Up & Running ,这两篇都是我写的。

关于git - 我应该将 .tfstate 文件提交到 Git 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38486335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com