运行时terraform apply
出现此错误:
Error: parsing old engine_version: Malformed version: 7.x
│
│ with module.redis_cluster.aws_elasticache_replication_group.replication_group,
│ on ../../../../modules/redis/main.tf line 11, in resource "aws_elasticache_replication_group" "replication_group":
│ 11: resource "aws_elasticache_replication_group" "replication_group" {
│
这似乎是hashicorp/terraform-provider-aws#32252中描述的问题,并且在评论中有详细的解决方法:
- 我们使用通配符语法在 Terraform 中配置了一些 Redis 实例:
6.x
- 有人在 AWS 控制台 UI 中手动更新了 Redis 引擎
7.0.*
- 更新后,代码已更新为
7.x
手动。它与AWS提供商配合良好4.37.0
。- 当我开始在同一个存储库中工作时,我将 AWS 提供程序从 更新
4.37.0
为5.9.0
并遇到了问题:7.x
值和 都不起作用7.0
。这是Redis versions must match <major>.<minor>...
或Error: parsing old engine_version: Malformed version: 7.x
错误。
解决方法继续描述编辑远程状态以修复问题。除了该解决方法之外,还有其他更简单的方法可以解决这个问题吗?
在我使用 AWS 控制台手动升级 Redis 并回顾性地编辑我的 terraform 代码以匹配我的新 Redis 配置后,我遇到了这个问题。
这是我修复该问题的方法:
terraform state pull > temp.tfstate
"engine_version": "6.x",
为"engine_version": "7.1",
Failed to write state: cannot overwrite existing state with serial 1 with a different state that has the same serial
)terraform state push temp.tfstate
此后,我的计算机
terraform plan
不再出现错误,也没有出现任何差异。