- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对是否将 .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
文件有几个原因:
terraform apply
后,您可能会忘记提交和推送更改,因此您的队友将拥有过时的 .tfstate
文件。此外,在不对这些状态文件进行任何锁定的情况下,如果两个团队成员同时在相同的 .tfstate
文件上运行 Terraform,您可能会覆盖彼此的更改。您可以通过以下方法解决这两个问题:a) 使用 Terraform remote state 将 .tfstate
文件存储在 S3 存储桶中,每次运行 terraform apply
时,它都会自动推送/pull .tfstate
文件,并且 b) 使用类似 terragrunt 的工具为您的 .tfstate
文件提供锁定。.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/
我已经使用 Terraform 为我的 AWS VPC 设置创建配置。这个想法是在每个部署中使用 terraform apply 以及 terraform destroy -target aws_na
如何禁用对 Azure 存储帐户的公共(public)访问,但仍可通过 cloudshell 进行访问。 我拥有的和工作的: 包含具有公共(public)访问权限的“terraform.tfstate
我有这个 docker 容器来运行 terraform。 别名 terraform='docker run -i -t -v ~/.aws:/root/.aws:ro -v $(pwd):/app -
我们从一个 tfstate 文件开始,随着时间的推移,它增长了很多。 现在,计划起来真的很慢,我现在想分成几个 tfstate 文件(一个用于我们的开发环境,一个用于通用共享基础架构,一个用于每个生产
我对是否将 .tfstate 文件提交到 Git 的问题有点困惑。 Terraform documentation状态: Terraform also put some state into the
我有Helm Applciations使用 Terraform 的 helm_release 资源与 Terraform 一起部署。 有时由于以下一个或多个原因,我的 Kubernetes Pod 将
我有Helm Applciations使用 Terraform 的 helm_release 资源与 Terraform 一起部署。 有时由于以下一个或多个原因,我的 Kubernetes Pod 将
我正在使用 terraformer(不是 terraform,检查这个 https://github.com/GoogleCloudPlatform/terraformer)导入一些托管在谷歌云上的基
我是一名优秀的程序员,十分优秀!