Descripción del Problema
Al trabajar con Terraform, es posible encontrarse con el siguiente error al intentar ejecutar un plan, aplicar cambios o cualquier otra operación que requiera acceso al estado compartido:
Error: Error locking state: Error acquiring the state lock: state blob is already locked
Lock Info:
ID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Path: /env/dev/appservice/app/front/terraform.tfstate
Operation: OperationTypePlan
Who: rokitoj@redorbita
Version: 0.14.7
Created: 2024-06-06 07:14:42.492117293 +0000 UTC
Info:
Este mensaje indica que Terraform no puede adquirir el bloqueo de estado porque otro proceso ya lo tiene. Esto ocurre para evitar que múltiples usuarios escriban en el estado simultáneamente, lo que podría causar corrupción de datos.
Solución
Para resolver este problema, podemos utilizar Terragrunt o Terraform para forzar el desbloqueo del estado. A continuación, se describen los pasos para hacerlo.
Paso a Paso para Desbloquear el Estado
- Identificar el ID del bloqueo: En el mensaje de error, se proporciona el ID del bloqueo. En este caso, el ID es
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
. - Usar Terragrunt/Terraform para forzar el desbloqueo: Terragrunt/Terraform proporciona una opción para forzar el desbloqueo del estado. Ejecuta el siguiente comando en tu terminal, reemplazando el ID con el proporcionado en el mensaje de error:
terraform force-unlock XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Do you really want to force-unlock?
Terraform will remove the lock on the remote state.
This will allow local Terraform commands to modify this state, even though it
may be still be in use. Only 'yes' will be accepted to confirm.
Enter a value: yes
Terraform state has been successfully unlocked!
The state has been unlocked, and Terraform commands should now be able to
obtain a new lock on the remote state.
Este comando forzará el desbloqueo del estado, permitiendo que puedas continuar con tus operaciones de Terraform.
Precauciones
-
Verifica antes de forzar el desbloqueo: Antes de forzar el desbloqueo, asegúrate de que ningún otro proceso legítimo esté utilizando el estado. Forzar el desbloqueo mientras otro proceso está activo puede causar inconsistencias en tu infraestructura.
-
Evitar el uso de
-lock=false
: Aunque Terraform permite desactivar el bloqueo de estado utilizando el flag-lock=false
, no se recomienda hacerlo porque aumenta el riesgo de que se produzcan escrituras concurrentes y corrupción del estado.
:wq!