Watch at EaseHistorias. Respuestas. Perspectiva.

Tecnología · GUÍA PRÁCTICA

¿Terraform muestra “Error acquiring the state lock”? Demuestra backend y propietario antes de force-unlock

Distingue writer activo, lock abandonado, backend incorrecto y permisos; conserva el registro y elige la recuperación mínima.

Original technical diagram separating Terraform backend identity, lock metadata, and the active operation owner.
Ilustración original: demuestra backend, registro y propietario por separado. Watch at Ease

El state lock de Terraform impide escritores simultáneos. El mismo error puede venir de un terminal activo, CI, sesión remota interrumpida, backend equivocado o permisos, así que no demuestra un archivo obsoleto.

Conserva el lock record y demuestra backend efectivo, objeto, workspace y owner. Solo un lock abandonado del mismo estado debe llegar a force-unlock o a romper un lease.

Conserva el error y el registro completo

Guarda el primer error antes de reintentar. Registra Lock ID, Path, Operation, Who, Version, Created e Info, además del comando, directorio, workspace y versión de Terraform. Oculta credenciales, no identidad.

Permiso denegado, tabla ausente, key incorrecta, metadata vacía y conflicto condicional son fallos distintos. Conserva código y recurso.

Demuestra backend y objeto de estado

Confirma el backend inicializado desde el directorio real y registra tipo, cuenta/proyecto, bucket/container, key/prefix y workspace. No supongas que otro checkout apunta al mismo estado.

En S3 distingue .tflock del locking DynamoDB obsoleto y revisa permisos; en GCS confirma bucket/prefix; en Azure identifica blob y lease exactos.

Descarta un propietario activo

Revisa terminales y procesos, jobs de CI, reintentos, ejecuciones remotas y concurrencia. Compara operación, usuario, hora, workspace y ruta con el lock record.

Si hay un writer activo, espera o detenlo limpiamente y deja que Terraform libere. No uses -lock=false en paralelo.

Separa bloqueo obsoleto de permisos y configuración

Un stale lock pertenece a una operación terminada cuya liberación automática falló. Wrong backend, fallback local, DeleteObject denegado, tabla ausente o metadata rota son otros fallos.

Conserva evidencia antes de reinicializar y corrige solo el permiso mínimo del lock object sin exponer secretos.

Aplica la recuperación mínima del backend

Solo para tu propio abandoned lock en la configuración verificada usa terraform force-unlock con el LOCK_ID exacto. No cambia infraestructura, pero un unlock erróneo permite otro writer.

En Azure usa Break lease solo tras la misma prueba. El lease roto no se renueva y puede tener periodo de ruptura. Nunca borres el estado.

Verifica el estado y evita recurrencia

Ejecuta un plan de solo lectura con locking normal y confirma backend, workspace, serial/versión y recursos. Revisa versioning y controles de recuperación.

Serializa writers de CI por objeto de estado y cancela jobs sustituidos de forma segura. El cierre exige un solo propietario del lock sobre el mismo estado.

Original recovery decision diagram for live Terraform operations, stale locks, Azure blob leases, and permission errors.
Ilustración original: clasifica el fallo antes de recuperar. Watch at Ease