Veelvoorkomende problemen oplossen bij het gebruik van Terraform in Azure
Dit artikel bevat veelvoorkomende problemen en mogelijke oplossingen bij het gebruik van Terraform in Azure.
Als u een probleem ondervindt dat specifiek is voor Terraform, gebruikt u een van de communityondersteuningskanalen van HashiCorp.
HashiCorp Terraform-specifieke ondersteuningskanalen
- Vragen, use-cases en nuttige patronen: Terraform-sectie van de HashiCorp-communityportal
- Providergerelateerde vragen: sectie Terraform-providers van de HashiCorp-communityportal
Kan de registratiestatus van de provider niet vermelden
Foutbericht:
Fout: de registratiestatus van de provider kan niet worden vermeld. Het is mogelijk dat dit wordt veroorzaakt door ongeldige referenties of dat de service-principal niet gemachtigd is voor het gebruik van de Resource Manager-API, Azure-fout: resources. ProvidersClient#List: Fout bij het reageren op aanvraag: StatusCode=403 -- Oorspronkelijke fout: autorest/azure: Service heeft een fout geretourneerd. Status=403 Code="AuthorizationFailed" Message="The client '0000000-0000-0000-0000-0000000000' with object id '0000000-0000-0000-000 0000000000000 heeft geen autorisatie om de actie Microsoft.Resources/subscriptions/providers/read uit te voeren via het bereik '/subscriptions/0000000000-00000-0000-0000-0000000000000' of het bereik is ongeldig. Als onlangs toegang is verleend, vernieuwt u uw referenties.'
Achtergrond: Als u Terraform-opdrachten uitvoert vanuit de Cloud Shell en u bepaalde Terraform-/Azure-omgevingsvariabelen hebt gedefinieerd, kunt u soms conflicten zien. De omgevingsvariabelen en de Azure-waarde die ze vertegenwoordigen, worden weergegeven in de volgende tabel:
Omgevingsvariabele | Azure-waarde |
---|---|
ARM_SUBSCRIPTION_ID | Azure-abonnements-id |
ARM_TENANT_ID | Tenant-id van Microsoft-account |
ARM_CLIENT_ID | App-id van Azure-service-principal |
ARM_CLIENT_SECRET | Wachtwoord voor Azure-service-principal |
Oorzaak: Vanaf dit schrijven overschrijft het Terraform-script dat wordt uitgevoerd in Cloud Shell de ARM_SUBSCRIPTION_ID
en ARM_TENANT_ID
omgevingsvariabelen met behulp van waarden uit het huidige Azure-abonnement. Als de service-principal waarnaar wordt verwezen door de omgevingsvariabelen geen rechten heeft voor het huidige Azure-abonnement, mislukken terraform-bewerkingen.
Fout bij het verkrijgen van de statusvergrendeling
Foutbericht:
Fout: Fout bij het verkrijgen van de statusvergrendeling; Foutbericht: 2 fouten zijn opgetreden:
* statusblob is al vergrendeld
* blobmetagegevens 'terraformlockid' was leeg
Terraform verkrijgt een statusvergrendeling om de status te beschermen tegen het schrijven van meerdere gebruikers tegelijk. Los het bovenstaande probleem op en probeer het opnieuw. Voor de meeste opdrachten kunt u het vergrendelen uitschakelen met de vlag '-lock=false', maar dit wordt niet aanbevolen.
Achtergrond: Als u Terraform-opdrachten uitvoert voor een Terraform-statusbestand en deze fout het enige bericht is dat wordt weergegeven, kunnen de volgende oorzaken van toepassing zijn. Van toepassing op lokale en externe statusbestanden.
Oorzaak: Er zijn twee mogelijke oorzaken voor deze fout. De eerste is dat een Terraform-opdracht al wordt uitgevoerd op het statusbestand en dat er een vergrendeling op het bestand is afgedwongen, zodat er niets wordt verbroken. De tweede mogelijke oorzaak is dat er een verbindingsonderbreking is opgetreden tussen het statusbestand en de CLI wanneer opdrachten werden uitgevoerd. Deze onderbreking treedt meestal op wanneer u externe statusbestanden gebruikt.
Oplossing: Controleer eerst of u nog geen opdrachten uitvoert voor het statusbestand. Als u met een lokaal statusbestand werkt, controleert u of er terminals zijn waarop opdrachten worden uitgevoerd. U kunt ook uw implementatiepijplijnen controleren om te zien of er iets wordt uitgevoerd, het statusbestand kan gebruiken. Als dit het probleem niet oplost, is het mogelijk dat de tweede oorzaak de fout heeft geactiveerd. Voor een extern statusbestand dat is opgeslagen in een Azure Storage-accountcontainer, kunt u het bestand zoeken en de knop Lease onderbreken gebruiken.
Als u andere back-ends gebruikt om uw statusbestand op te slaan, raadpleegt u de HashiCorp-documentatie voor aanbevelingen.
VPN-fouten
Zie het artikel Problemen met een hybride VPN-verbinding oplossen voor informatie over het oplossen van VPN-fouten.