Meu repositório Terraform Git acabou apresentando algum erro de dados irreconciliáveis e não consegui enviar uma alteração recente. Eu exportei meu commit para um patch, reclonei, apliquei o patch e então percebi que simplesmente estraguei todo o meu estado local. Eu usei o AWS CLI para sincronizar toda a árvore de arquivos de estado, copiei aquele em/como o .terraform/terraform.tfstate do caminho que eu queria aplicar, executei o init e agora estou recebendo um erro de versão.
Este é exatamente o mesmo ambiente em execução que produziu os arquivos de estado em primeiro lugar. Esta também é a única máquina que aplica alterações, então tudo ainda deve estar sincronizado (não que isso esteja relacionado ao problema imediato, mas não causará nenhum problema adicional depois que passarmos por isso).
Comandos que tentei executar:
$ terraform init
$ terraform init -upgrade
$ terraform init -upgrade -migrate-state
A saída inevitável e inabalável:
Initializing the backend...
╷
│ Error: Failed to load state: Terraform 1.3.9 does not support state version 4, please update.
Não consigo encontrar nenhuma postagem ou descrição em nenhum lugar sobre como restaurar do estado remoto e, no entanto, acho que quase todo mundo teve que restaurar do estado remoto em algum momento. Eu não consigo entender.
Qual deve ser o processo para restaurar remotamente? Por que eu teria problemas de versão se o ambiente, a configuração do projeto e o estado do projeto não tivessem mudado?
Obrigado. Qualquer ajuda é apreciada.
Quando executei
terraform init
, ele inicializou o estado para .terraform/terraform.tfstate . Portanto, limpei os metadados e restaurei meu arquivo de estado para esse caminho de arquivo (uma cópia do estado que baixei manualmente do S3). Foi quando comecei a ver o erro acima. Não sei por quê. Nada disso faz sentido. No entanto, depois de observar uma referência sutil de uma postagem, movi o arquivo de estado de volta para a raiz desse caminho do projeto e as coisas funcionaram magicamente.