Nota
L'accés a aquesta pàgina requereix autorització. Podeu provar d'iniciar la sessió o de canviar els directoris.
L'accés a aquesta pàgina requereix autorització. Podeu provar de canviar els directoris.
En este artículo se enumeran los problemas comunes y las posibles soluciones al usar Terraform en Azure.
Si se produce 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 HashiCorp Terraform
- Preguntas, casos de uso y patrones útiles: sección Terraform del portal de la comunidad de HashiCorp
- Preguntas, casos de uso y patrones útiles: sección Terraform del portal de la comunidad de HashiCorp
No se puede enumerar el estado de registro del proveedor
Mensaje de error:
Error: No se puede enumerar el estado de registro del proveedor. Este error puede producirse debido a credenciales no válidas o porque la entidad de servicio no tiene permiso para usar la API de Resource Manager. Error de Azure: resources.ProvidersClient#List: Error al responder a la solicitud: StatusCode=403 -- Error original: autorest/azure: El servicio devolvió un error. Status=403 Code="AuthorizationFailed" Message="El cliente '00000000-0000-0000-0000-000000000000' con el id. de objeto '00000000-0000-0000-0000-000000000000' no tiene autorización para realizar la acción 'Microsoft.Resources/subscriptions/providers/read' en el ámbito '/subscriptions/00000000-0000-0000-0000-000000000000' o bien el ámbito no es válido." Si se te ha concedido acceso recientemente, actualiza tus credenciales.
Fondo: Si ejecuta comandos de Terraform desde el Cloud Shell y define determinadas variables de entorno de Terraform/Azure, es posible que vea conflictos. En la tabla siguiente se enumeran las variables de entorno y los valores de Azure que representan:
| Variable del entorno | valor de Azure |
|---|---|
| ARM_SUBSCRIPTION_ID | Identificador de suscripción de Azure |
| ARM_TENANT_ID | id. de inquilino de la cuenta de 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 texto, el script de Terraform que se ejecuta en Cloud Shell sobrescribe las variables de entorno ARM_SUBSCRIPTION_ID y ARM_TENANT_ID usando 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 para la suscripción de Azure actual, se producirá un error en las operaciones de Terraform.
Error al adquirir el bloqueo de estado
Mensaje de error:
Error al adquirir el bloqueo del estado; Mensaje de error: se produjeron 2 errores:
* el blob de estado ya está bloqueado
* Los metadatos de blob "terraformlockid" están vacíos
Terraform establece un bloqueo del estado para evitar que varios usuarios escriban en el estado 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.
Fondo: Si está ejecutando comandos de Terraform en un archivo de estado de Terraform y este error es el único mensaje que aparece, es posible que se apliquen las siguientes causas. Este error se aplica a los archivos de estado local y remoto.
Causa: Hay dos posibles causas de este error. La primera causa es que ya se está ejecutando un comando de Terraform sobre el archivo de estado y este ha forzado un bloqueo del archivo, por lo que no se produce ningún error. La segunda causa potencial es que se produjo una interrupción de la conexión entre el archivo de estado y la CLI cuando se estaban ejecutando comandos. Esta interrupción suele producirse cuando se usan archivos de estado remoto.
Resolución: En primer lugar, asegúrese de que aún no está ejecutando ningún comando en el archivo de estado. Si está trabajando con un archivo de estado local, compruebe si tiene terminales que ejecutan comandos. Como alternativa, compruebe las canalizaciones de implementación para ver si algo en ejecución podría usar el archivo de estado. Si esta condición no resuelve el problema, es posible que la segunda causa desencadene el error. 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.
Si utiliza otros sistemas de almacenamiento para guardar el archivo de estado, consulte la documentación de HashiCorp para obtener recomendaciones.
Errores de VPN
Para obtener información sobre cómo resolver errores de VPN, consulte el artículo Solución de problemas de una conexión VPN híbrida.
Terraform planea eliminar y volver a crear una cuenta de almacenamiento
Terraform podría planear eliminar y volver a crear una cuenta de almacenamiento de Azure después de Azure cambiar la cuenta de almacenamiento fuera de Terraform. Este comportamiento puede producirse durante una conversión de redundancia de cuenta de Azure Storage admitida, donde account_replication_type cruza el límite entre el conjunto no zonal (LRS, GRS, RA-GRS) y el conjunto zonal (ZRS, GZRS, RA-GZRS).
Antes de aplicar el plan, revise los cambios propuestos y confirme por qué Terraform considera necesario reemplazar la cuenta de almacenamiento. La recreación de una cuenta de almacenamiento puede provocar un tiempo de inactividad de la aplicación o una pérdida de datos.
Para reducir este riesgo:
- Deshabilite la aprobación automática de las implementaciones que administran cuentas de almacenamiento y revise cada
terraform plan. - Configure
prevent_destroy = trueen el bloquelifecycledel recurso de la cuenta de almacenamiento. - Antes de iniciar la conversión, agregue
account_replication_typetemporalmente aignore_changes. - Después de la conversión, ejecute
terraform apply -refresh-onlypara actualizar el estado de Terraform y, a continuación, actualice la configuración de Terraform para que coincida con la cuenta de almacenamiento implementada. - Elimine
ignore_changessolo después de ejecutarterraform plany confirmar que no muestra cambios inesperados.
Para obtener instrucciones detalladas sobre la conversión, consulte Evitar el desfase de Terraform para recursos con estado Azure.