Ao executar, terraform apply
recebi este erro:
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" {
│
Este parece ser o problema descrito em hashicorp/terraform-provider-aws#32252 , e há uma solução alternativa detalhada em um comentário :
- Tínhamos algumas instâncias do Redis configuradas no Terraform usando a sintaxe curinga:
6.x
- Alguém atualizou manualmente os mecanismos Redis na interface do usuário do console da AWS para
7.0.*
- Após a atualização, o código foi atualizado
7.x
manualmente. Funcionou bem com o provedor AWS4.37.0
.- Quando comecei a trabalhar no mesmo repositório, atualizei o provedor AWS de
4.37.0
para5.9.0
e enfrentei o problema: nem o7.x
valor nem7.0
funcionou. Era o erroRedis versions must match <major>.<minor>...
orError: parsing old engine_version: Malformed version: 7.x
.
A solução alternativa prossegue descrevendo a edição do estado remoto para corrigir o problema. Existe uma maneira mais fácil de resolver isso além dessa solução alternativa?
Tive esse problema depois de usar o console da AWS para atualizar manualmente o Redis e editar retrospectivamente meu código do Terraform para corresponder à minha nova configuração do Redis.
Foi assim que resolvi o problema:
terraform state pull > temp.tfstate
"engine_version": "6.x",
para"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
Depois disso, o meu
terraform plan
não apresentou erros e não apresentou diferenças.