问题描述
我的队友正在使用terraform v0.12.28,我开始与他合作,但是我正在使用v0.13.x并进行了一些更改,我们使用存储在GCS存储桶中的状态文件。
现在我的队友要求我降级,因为他已经编写了一些与v0.12.28兼容的模块,我确实降级了我的版本,但是远程状态仍处于v0.13.x。
现在,我们被更高版本的远程状态所困扰。 解决此问题的最安全方法是什么? 我们处于起步阶段,因此我们可以销毁整个基础架构,但仍然想知道解决方法。
解决方法
如果您在后端存储桶中启用了版本控制,我建议
- 恢复该状态的旧版本,
- 修复所有差异(例如,从此版本开始导入创建的资源),并且
- 从那里开始正常工作。
不幸的是,这是一个手动过程,因此afaik并没有支持您将状态恢复为早期版本的terraform命令。
其他说明
对于未来,我的建议是:
- 确保在状态后端启用了版本控制
- 确保通过将其地形版本指定为约束来固定它。
例如通过创建versions.tf
:
terraform {
required_version = "0.12.28"
}
您还可以在此处固定提供程序版本(例如,如果出于任何原因需要使用AWS 2.x版本)
terraform {
required_version = "0.12.28"
required_providers {
aws = ">= 2.58,< 3.0"
}
}