Terraform状态文件的备份

Terraform状态文件的备份,terraform,Terraform,我通常通过Bastion服务器运行所有Terraform脚本,所有代码(包括tf状态文件)都驻留在同一台服务器上。发生了这样一个事件,我的机器意外地硬重启,根文件系统不知何故损坏了。现在我的状态文件不见了,但我的资源仍然存在并正在运行。我不想再次运行terraform应用程序以在停机的情况下重新创建整个环境。从这场混乱中恢复过来的最佳方式是什么?我们可以做些什么,这样以后就不会重蹈覆辙了 我已经看过terraform刷新和terraform导入。但是有没有更好的方法来做到这一点呢 请参见,不幸的

我通常通过Bastion服务器运行所有Terraform脚本,所有代码(包括tf状态文件)都驻留在同一台服务器上。发生了这样一个事件,我的机器意外地硬重启,根文件系统不知何故损坏了。现在我的状态文件不见了,但我的资源仍然存在并正在运行。我不想再次运行terraform应用程序以在停机的情况下重新创建整个环境。从这场混乱中恢复过来的最佳方式是什么?我们可以做些什么,这样以后就不会重蹈覆辙了


我已经看过terraform刷新和terraform导入。但是有没有更好的方法来做到这一点呢

请参见,不幸的是,它说明导入是唯一的解决方案。

不幸的是,请参见,它说明导入是唯一的解决方案。

如果您仍然无法恢复地形状态。您可以使用创建特定aws资源的地形配置和状态蓝图,但需要手动编辑状态以管理资源。您可以拥有此状态文件,运行terraform plan并将其输出与您的基础设施进行比较。拥有远程状态是很好的,尤其是使用任何对象存储(如aws s3)或键值存储(如concur)。它支持在多个事务同时发生时锁定状态。备份过程也非常简单。

如果您仍然无法恢复地形状态。您可以使用创建特定aws资源的地形配置和状态蓝图,但需要手动编辑状态以管理资源。您可以拥有此状态文件,运行terraform plan并将其输出与您的基础设施进行比较。拥有远程状态是很好的,尤其是使用任何对象存储(如aws s3)或键值存储(如concur)。它支持在多个事务同时发生时锁定状态。备份过程也非常简单

我所有的代码,包括tf状态文件,都驻留在同一台服务器上

由于您没有.backup文件,我不确定您是否能够以terraform方式顺利恢复状态文件,请务必告诉我您是否找到了一种方法:。然而,你们可以采取一些措施来帮助你们走出这种局面

最好的做法是将所有状态文件保存在一些远程存储中,如S3或Blob,并相应地保存在内存中,以便每次销毁或创建新堆栈时,它都会远程联系状态文件

最重要的是,您可以利用terraform workspace避免多环境场景中状态文件的混乱。还考虑创建一个用于回溯和版本部署的计划。
terraform plan -var-file "" -out "" -target=module.<blue/green>
我们可以做些什么,这样以后就不会重复了

Terraform蓝绿色部署是您问题的答案。我们实现了这个模型很长一段时间,它运行得很顺利。整个思想是模块化和可重用性,相同的模板用于5个不同的组件,具有不同的体系结构,没有任何停机时间。核心模板保持不变,变量文件不同

我们正在利用地形。我们有两个模块叫做蓝色和绿色,你可以说出任何东西。在任何给定的时间点,蓝色或绿色都将占用交通。如果我们要部署一些更改,我们将基于状态输出的替代堆栈基于地形状态的目标模块,自动验证它,然后将流量移动到新堆栈并销毁旧堆栈

这是一篇你可以作为参考的文章,但这并没有反映出我们从一开始就做得很好

我所有的代码,包括tf状态文件,都驻留在同一台服务器上

由于您没有.backup文件,我不确定您是否能够以terraform方式顺利恢复状态文件,请务必告诉我您是否找到了一种方法:。然而,你们可以采取一些措施来帮助你们走出这种局面

最好的做法是将所有状态文件保存在一些远程存储中,如S3或Blob,并相应地保存在内存中,以便每次销毁或创建新堆栈时,它都会远程联系状态文件

最重要的是,您可以利用terraform workspace避免多环境场景中状态文件的混乱。还考虑创建一个用于回溯和版本部署的计划。
terraform plan -var-file "" -out "" -target=module.<blue/green>
我们可以做些什么,这样以后就不会重复了

Terraform蓝绿色部署是您问题的答案。我们实现了这个模型很长一段时间,它运行得很顺利。整个思想是模块化和可重用性,相同的模板用于5个不同的组件,具有不同的体系结构,没有任何停机时间。核心模板保持不变,变量文件不同

我们正在利用地形。我们有两个模块,分别是蓝色和绿色 我能说出任何东西。在任何给定的时间点,蓝色或绿色都将占用交通。如果我们要部署一些更改,我们将基于状态输出的替代堆栈基于地形状态的目标模块,自动验证它,然后将流量移动到新堆栈并销毁旧堆栈

这是一篇你可以作为参考的文章,但这并没有反映出我们从一开始就做得很好


这对恢复没有帮助,但强烈建议将状态存储在S3中,它工作得非常好:@StephenKing没有意识到这一点,它看起来非常完美。但是,如果您尚未实现此功能,或者正在使用任何其他云提供商,那么情况会怎样呢?您的.tfstate总是存储在某个地方。S3、本地或您的云提供商提出的任何存储问题。如果这个“工作位置”是不安全的,我会考虑自动备份。你还有TRARAGE吗?TFSTATE备份文件可能是?不,它也被擦除了机器是不可访问的。不利于恢复,但我们强烈建议将状态存储在S3中,这样可以很好地工作:@StephenKing不知道这看起来很完美。但是,如果您尚未实现此功能,或者正在使用任何其他云提供商,那么情况会怎样呢?您的.tfstate总是存储在某个地方。S3、本地或您的云提供商提出的任何存储问题。如果这个“工作位置”是不安全的,我会考虑自动备份。你仍然有TRARAGE。TFSTATE备份文件可能?不,它也被擦除了机器不可访问。TrRaFrm导入仍然是相当多的人工努力。我目前正在测试terraform刷新。接下来的更新。terraform导入仍然需要大量手动操作。我目前正在测试terraform刷新。更新如下。