Solución de problemas comunes al usar Terraform en Azure

En este artículo se enumeran los problemas comunes y las posibles soluciones al usar Terraform en Azure.

Si encuentra un problema específico de Terraform, use uno de los canales de soporte técnico de la comunidad de HashiCorp.

Canales de soporte técnico específicos de Terraform de HashiCorp

No se puede mostrar el estado de registro del proveedor

Mensaje de error:

Error: No se puede enumerar el estado de registro del proveedor, es posible que esto se deba a credenciales no válidas o que la entidad de servicio no tiene permiso para usar la API de Resource Manager, Error de Azure: recursos. ProvidersClient#List: Error al responder a la solicitud: StatusCode=403 - Error original: autorest/azure: El servicio devolvió un error. Status=403 Code="AuthorizationFailed" Message="The client '00000000-0000-0000-0000-0000000000000' con el identificador de objeto '00000000-0000-0000-0000-0000'0-0000000000000" no tiene autorización para realizar la acción "Microsoft.Resources/subscriptions/providers/read" en el ámbito '/subscriptions/000000000-0000-0000-0000-00000000000000' o el ámbito no es válido. Si el acceso se ha concedido recientemente, actualice las credenciales."

Contexto: si ejecuta comandos de Terraform desde Cloud Shell y ha definido ciertas variables de entorno de Terraform/Azure, puede que, en ocasiones, observe conflictos. Las variables de entorno y el valor de Azure que representan se enumeran en la tabla siguiente:

Variable del entorno Valor de Azure
ARM_SUBSCRIPTION_ID Id. de suscripción de Azure
ARM_TENANT_ID Identificador de inquilino de la cuenta Microsoft
ARM_CLIENT_ID Identificador de aplicación de la entidad de servicio de Azure
ARM_CLIENT_SECRET Contraseña de la entidad de servicio de Azure

Causa: en el momento de redactar este artículo, el script de Terraform que se ejecuta en Cloud Shell sobrescribe las variables de entorno ARM_SUBSCRIPTION_ID y ARM_TENANT_ID con valores de la suscripción actual de Azure. Como resultado, si la entidad de servicio a la que hacen referencia las variables de entorno no tiene derechos en la suscripción actual de Azure, se producirá un error en las operaciones de Terraform.

Error al adquirir el bloqueo de estado

Mensaje de error:

Error: Error al adquirir el bloqueo de estado; Mensaje de error: 2 errores:
* el blob de estado ya está bloqueado
* Los metadatos de blob "terraformlockid" están vacíos
Terraform adquiere un bloqueo de estado para proteger el estado de la escritura de varios usuarios al mismo tiempo. Resuelva el problema anterior e inténtelo de nuevo. Para la mayoría de los comandos, puede deshabilitar el bloqueo con la marca "-lock=false", pero no se recomienda.

Antecedentes: Si ejecuta comandos de Terraform en un archivo de estado de Terraform y este error es el único mensaje que aparece, puede deberse a las siguientes causas. Se aplica a archivos de estado locales y remotos.

Causa: Hay dos causas posibles para este error. La primera es que un comando de Terraform ya se está ejecutando en el archivo de estado y ha forzado un bloqueo en el archivo, por lo que no se interrumpe nada. La segunda causa posible es que se produjo una interrupción de la conexión entre el archivo de estado y la CLI cuando los comandos se estaban ejecutando. Esta interrupción se produce normalmente cuando se usan archivos de estado remotos.

Resolución: En primer lugar, asegúrese de que no haya ningún comando en ejecución en el archivo de estado. Si está trabajando con un archivo de estado local, compruebe si tiene terminales que estén ejecutando algún comando. También se pueden comprobar las canalizaciones de implementación para ver si algo en ejecución podría estar usando el archivo de estado. Si esto no resuelve el problema, es posible que el error se deba a la segunda causa. Para un archivo de estado remoto almacenado en un contenedor de la cuenta de Azure Storage, puede buscar el archivo y usar el botón Interrumpir concesión.

Screenshot that shows the Azure Storage container Break lease button.

Si usa otros back-ends para almacenar el archivo de estado, consulte la documentación de HashiCorp para obtener recomendaciones.

Errores de VPN

Para información sobre cómo resolver errores VPN, consulte el artículo Solución de problemas de una conexión VPN híbrida.