Felsöka vanliga problem när du använder Terraform i Azure

Den här artikeln innehåller vanliga problem och möjliga lösningar när du använder Terraform i Azure.

Om du stöter på ett problem som är specifikt för Terraform använder du en av HashiCorps community-supportkanaler.

HashiCorp Terraform-specifika supportkanaler

Det går inte att lista providerns registreringsstatus

Felmeddelande:

Fel: Det går inte att lista providerns registreringsstatus, det är möjligt att detta beror på ogiltiga autentiseringsuppgifter eller att tjänstens huvudnamn inte har behörighet att använda Resource Manager-API:et, Azure-fel: resurser. ProvidersClient#List: Det gick inte att svara på begäran: StatusCode=403 – Ursprungligt fel: autorest/azure: Tjänsten returnerade ett fel. Status=403 Code="AuthorizationFailed" Message="Klienten '00000000-0000-0000-0000-0000-00000000' med objekt-ID '00000000-0000-0000-00000-00000000000000 har inte behörighet att utföra åtgärden "Microsoft.Resources/subscriptions/providers/read" över omfånget "/subscriptions/00000000-0000-0000-0000-0000000000000" eller omfånget är ogiltigt. Om åtkomst nyligen beviljats kan du uppdatera dina autentiseringsuppgifter.”

Bakgrund: Om du kör Terraform-kommandon från Cloud Shell och har definierat vissa Terraform-/Azure-miljövariabler kan du ibland se konflikter. Miljövariablerna och det Azure-värde som de representerar visas i följande tabell:

Miljövariabel Azure-värde
ARM_SUBSCRIPTION_ID Azure-prenumerations-ID
ARM_TENANT_ID Klient-ID för Microsoft-konto
ARM_CLIENT_ID App-ID för Azure-tjänstens huvudnamn
ARM_CLIENT_SECRET Lösenord för Azure-tjänstens huvudnamn

Orsak: När det här skrivs skriver ARM_SUBSCRIPTION_ID Terraform-skriptet som körs i Cloud Shell över miljövariablerna och ARM_TENANT_ID med värden från den aktuella Azure-prenumerationen. Om tjänstens huvudnamn som refereras av miljövariablerna inte har behörighet till den aktuella Azure-prenumerationen misslyckas därför alla Terraform-åtgärder.

Fel vid anskaffning av tillståndslåset

Felmeddelande:

Fel: Det gick inte att hämta tillståndslåset. Felmeddelande: 2 fel inträffade:
* Tillståndsblob är redan låst
* blobmetadata "terraformlockid" var tom
Terraform hämtar ett tillståndslås för att skydda tillståndet från att skrivas av flera användare samtidigt. Lös problemet ovan och försök igen. För de flesta kommandon kan du inaktivera låsning med flaggan "-lock=false", men detta rekommenderas inte.

Bakgrund: Om du kör Terraform-kommandon mot en Terraform-tillståndsfil och det här felet är det enda meddelandet som visas kan följande orsaker gälla. Gäller för lokala filer och fjärrtillståndsfiler.

Orsak: Det finns två möjliga orsaker till det här felet. Den första är att ett Terraform-kommando redan körs mot tillståndsfilen och att det har tvingat fram ett lås på filen, så ingenting går sönder. Den andra potentiella orsaken är att ett anslutningsavbrott inträffade mellan tillståndsfilen och CLI när kommandon kördes. Det här avbrottet inträffar oftast när du använder fjärrtillståndsfiler.

Lösning: Kontrollera först att du inte redan kör några kommandon mot tillståndsfilen. Om du arbetar med en lokal tillståndsfil kontrollerar du om du har terminaler som kör några kommandon. Du kan också kontrollera dina distributionspipelines för att se om något som körs kan använda tillståndsfilen. Om detta inte löser problemet är det möjligt att den andra orsaken utlöste felet. För en fjärrtillståndsfil som lagras i en Azure Storage-kontocontainer kan du hitta filen och använda knappen Bryt lån .

Screenshot that shows the Azure Storage container Break lease button.

Om du använder andra serverdelar för att lagra din tillståndsfil kan du se HashiCorp-dokumentationen för rekommendationer.

VPN-fel

Information om hur du löser VPN-fel finns i artikeln Felsöka en VPN-hybridanslutning.