terraform - 如何在 terraform 中回滚到以前的状态
问题描述
我正在处理 terraform 任务并试图了解状态文件是如何工作的。我创建了 main.tf 文件,其中
vpc,firewall,subnet,compute_instance
必须在 GCP 中创建。因此,我已将其应用于 GCP 环境并terraform.tfstate
创建了一个文件名文件,并将此文件备份到名为 1st-run 的文件夹中。
现在我更新了我main.tf
的
2vpc,2firewalls,2subnets,compute_instance
因为我需要为我的 vm.Did terraform 应用添加另一个 nic,并且创建了环境并创建了 terraform.tfstate 文件。我将此文件备份到名为2nd-run
.
我想回滚我为第一次运行执行的环境。我有第一次运行文件夹中的状态文件。
通过使用 statefile 而不是触摸代码来回滚的命令是什么,以便我的 GCP 环境自动拥有
vpc,firewall,subnet,compute_instance
这是我第一次执行。
解决方案
没有办法回滚到今天在 Terraform 中的状态文件中描述的先前状态。Terraform 总是以从先前状态(最新状态快照)移动到配置所代表的目标状态为目标来计划更改。Terraform 还将配置用于状态中未跟踪的信息,例如提供程序配置。
在 Terraform 中表示“回滚”的常用方法是将您的配置置于版本控制中并在每次更改之前提交,然后如果需要,您可以使用版本控制系统的功能恢复到旧配置。
但是,并非所有更改都可以完全通过还原 VCS 更改来回滚。例如,如果您provider
在一次提交中为该提供者添加了一个新块和资源,然后应用了结果,为了回滚,您需要更改配置以仍然包含该provider
块但不包含任何resource
块,因此您需要在还原期间调整配置。然后,Terraform 将使用剩余的provider
块来配置提供程序以运行销毁操作,之后您最终也可以删除该provider
块。
推荐阅读
- python - 如何在 discord.py 中获得嵌入的颜色
- html - 如果文本溢出,如何获取用户可见的文本?
- asp.net - 用于 WEB API 调用的 ASP.NET 默认凭据
- sql - 在 SQL 中使用连接操作
- php - 无法将 laravel 应用程序部署到 hostgator 主机中的子域
- python - 将图像、视频转换为字符串格式的最佳方法
- docker - 如何在 docker 容器的新镜像中使用已安装的软件包?
- python - 如何在 Python 中使用 Selenium 在 Myntra 上单击“显示更多”
- reactjs - 如何使用每个选项卡的下拉菜单实现 material-ui 选项卡
- c++ - 为什么这个哨兵循环总是返回错误的值?