Bru*_*779 14 amazon-web-services terraform
使用terraform在AWS中部署相当大的基础架构时,我们的遥控器tfstate已损坏并被删除.
从文档中,我收集到terraform refresh应该查询AWS以获取基础结构的真实状态并按顺序更新tfstate,但这不会发生:我的tfstate未受影响而plan + apply会产生很多Already existing错误.
什么是terraform refresh真的?
yda*_*coR 20
terraform refresh 尝试查找状态文件中保存的任何资源,并使用自上次运行以来在Terraform之外的提供程序中发生的任何漂移进行更新.
例如,让我们说你的状态文件包含的实例ID 3个EC2实例i-abc123,i-abc124,i-abc125然后删除i-abc124Terraform之外.运行之后terraform refresh,plan会显示它需要创建第二个实例,而销毁计划会显示它只需要销毁第一个和第三个实例(并且不会破坏丢失的第二个实例).
Terraform做出了非常具体的决定,不会干扰Terraform未管理的事情.这意味着如果资源在其状态文件中不存在,那么它绝对不会以任何方式触及它.这使您可以与其他工具一起运行Terraform以及在AWS控制台中进行手动更改.这也意味着您可以通过提供不同的状态文件来在不同的上下文中运行Terraform,从而允许您将基础架构拆分为多个状态文件,从而避免灾难性的状态文件损坏.
为了让你自己摆脱目前的漏洞,我建议你terraform import自由地使用回到你的状态文件中,或者,如果可能的话,手动销毁Terraform之外的所有内容并从头开始.
将来我会建议拆分状态文件以应用更细粒度的上下文,并将远程状态存储在启用了版本控制的S3存储桶中.您还可以查看像Terragrunt这样的工具来锁定您的状态文件,以帮助避免损坏或等待即将发布的Terraform 0.9版本中的本机状态文件锁定.
| 归档时间: |
|
| 查看次数: |
5684 次 |
| 最近记录: |