Risolvere i problemi comuni relativi all'uso di Terraform in Azure

Questo articolo elenca i problemi comuni e le possibili soluzioni quando si usa Terraform in Azure.

Se si verifica un problema specifico di Terraform, usare uno dei canali di supporto della community di HashiCorp.

Canali di supporto specifici di HashiCorp Terraform

Impossibile elencare lo stato di registrazione del provider

Messaggio di errore:

Errore: Non è possibile elencare lo stato di registrazione del provider, è possibile che ciò sia dovuto a credenziali non valide o che l'entità servizio non disponga dell'autorizzazione per usare l'API di Resource Manager, errore di Azure: risorse. ProvidersClient#List: Errore durante la risposta alla richiesta: StatusCode=403 -- Original Error: autorest/azure: Service ha restituito un errore. Status=403 Code="AuthorizationFailed" Message="The client '00000000-0000-0000-0000-0000000000000' con ID oggetto '00000000-0000-0000-00000-0000000000000 non dispone dell'autorizzazione per eseguire l'azione 'Microsoft.Resources/subscriptions/providers/read' sull'ambito '/subscriptions/00000000-0000-0000-0000-000000000000' o l'ambito non è valido. Se l'accesso è stato concesso di recente, aggiornare le credenziali".

Background: se si eseguono comandi Terraform da Cloud Shell e sono state definite determinate variabili di ambiente Terraform/Azure, a volte è possibile riscontrare conflitti. Le variabili di ambiente e il valore di Azure che rappresentano sono elencate nella tabella seguente:

Variabile di ambiente Valore di Azure
ARM_SUBSCRIPTION_ID ID sottoscrizione di Azure
ARM_TENANT_ID ID tenant dell'account Microsoft
ARM_CLIENT_ID ID app dell'entità servizio di Azure
ARM_CLIENT_SECRET Password dell'entità servizio di Azure

Causa: a partire da questo articolo, lo script Terraform eseguito in Cloud Shell sovrascrive le ARM_SUBSCRIPTION_ID variabili di ambiente e ARM_TENANT_ID usando i valori della sottoscrizione di Azure corrente. Di conseguenza, se l'entità servizio a cui fanno riferimento le variabili di ambiente non dispone dei diritti per la sottoscrizione di Azure corrente, le operazioni terraform avranno esito negativo.

Errore durante l'acquisizione del blocco di stato

Messaggio di errore:

Errore: Errore durante l'acquisizione del blocco di stato; Messaggio di errore: 2 errori:
* il BLOB di stato è già bloccato
* i metadati blob "terraformlockid" erano vuoti
Terraform acquisisce un blocco di stato per proteggere lo stato da scrivere contemporaneamente da più utenti. Risolvere il problema precedente e riprovare. Per la maggior parte dei comandi, è possibile disabilitare il blocco con il flag "-lock=false", ma questo non è consigliato.

Background: se si eseguono comandi Terraform su un file di stato terraform e questo errore è l'unico messaggio visualizzato, potrebbero essere applicate le cause seguenti. Si applica ai file di stato locali e remoti.

Causa: esistono due possibili cause per questo errore. Il primo è che un comando Terraform è già in esecuzione sul file di stato e ha forzato un blocco sul file, quindi nulla si interrompe. La seconda causa potenziale è che si è verificata un'interruzione della connessione tra il file di stato e l'interfaccia della riga di comando durante l'esecuzione dei comandi. Questa interruzione si verifica più comunemente quando si usano file di stato remoti.

Soluzione: assicurarsi prima di tutto di non eseguire alcun comando nel file di stato. Se si usa un file di stato locale, verificare se sono presenti terminali che eseguono comandi. In alternativa, controllare le pipeline di distribuzione per verificare se un elemento in esecuzione potrebbe usare il file di stato. Se questo non risolve il problema, è possibile che la seconda causa ha attivato l'errore. Per un file di stato remoto archiviato in un contenitore di account Archiviazione di Azure, è possibile individuare il file e usare il pulsante Interrompi lease.

Screenshot that shows the Azure Storage container Break lease button.

Se si usano altri back-end per archiviare il file di stato, per consigli, vedere la documentazione di HashiCorp.

Errori VPN

Per informazioni sulla risoluzione degli errori di una connessione VPN, vedere l'articolo Risolvere i problemi relativi a una connessione VPN ibrida.