Řešení běžných problémů při používání Terraformu v Azure

Tento článek uvádí běžné problémy a možná řešení při používání Terraformu v Azure.

Pokud narazíte na problém, který je specifický pro Terraform, použijte jeden z komunitních kanálů podpory hashiCorp.

Kanály podpory specifické pro HashiCorp Terraform

Nejde vypsat stav registrace poskytovatele

Chybová zpráva:

Chyba: Stav registrace poskytovatele nelze vypsat, je možné, že příčinou jsou neplatné přihlašovací údaje nebo instanční objekt nemá oprávnění k používání rozhraní API Resource Manageru, chyba Azure: prostředky. ProvidersClient#List: Chyba při odpovídání na požadavek: StatusCode=403 – původní chyba: autorest/azure: Služba vrátila chybu. Status=403 Code="AuthorizationFailed" Message="Klient '00000000-0000-0000-0000-0000000000000' s ID objektu '00000000-0000-0000-0000 -00000000000 nemá autorizaci k provedení akce Microsoft.Resources/subscriptions/providers/read v oboru /subscriptions/0000000-0000-0000-0000-0000-000000000000000 nebo rozsah je neplatný. Pokud byl přístup nedávno udělen, aktualizujte přihlašovací údaje.

Pozadí: Pokud spouštíte příkazy Terraformu z Cloud Shellu a definovali jste určité proměnné prostředí Terraform nebo Azure, můžete někdy vidět konflikty. Proměnné prostředí a hodnota Azure, které představují, jsou uvedeny v následující tabulce:

Proměnná prostředí Hodnota Azure
ARM_SUBSCRIPTION_ID ID předplatného Azure
ARM_TENANT_ID ID tenanta účtu Microsoft
ARM_CLIENT_ID ID aplikace instančního objektu Azure
ARM_CLIENT_SECRET Heslo instančního objektu Azure

Příčina: Od tohoto zápisu přepíše ARM_SUBSCRIPTION_ID skript Terraformu, který běží v Cloud Shellu, a ARM_TENANT_ID proměnné prostředí pomocí hodnot z aktuálního předplatného Azure. Pokud tedy instanční objekt odkazovaný proměnnými prostředí nemá oprávnění k aktuálnímu předplatnému Azure, všechny operace Terraformu selžou.

Chyba při získávání zámku stavu

Chybová zpráva:

Chyba: Chyba při získávání zámku stavu; Chybová zpráva: Došlo k 2 chybám:
* Objekt blob stavu je již uzamčen
* Metadata objektu blob "terraformlockid" byla prázdná.
Terraform získá zámek stavu, který chrání stav před zápisem více uživatelů najednou. Vyřešte prosím výše uvedený problém a zkuste to znovu. U většiny příkazů můžete zakázat uzamčení příznakem -lock=false, ale nedoporučuje se to.

Pozadí: Pokud spouštíte příkazy Terraformu pro soubor stavu Terraformu a tato chyba je jediná zpráva, která se zobrazí, můžou platit následující příčiny. Platí pro místní a vzdálené soubory stavu.

Příčina: Tato chyba má dvě možné příčiny. První je, že příkaz Terraformu už běží proti souboru stavu a vynutil zámek souboru, takže se nic neruší. Druhou možnou příčinou je, že mezi stavovým souborem a rozhraním příkazového řádku došlo k přerušení připojení při spuštění příkazů. K tomuto přerušení nejčastěji dochází při používání vzdálených stavových souborů.

Řešení: Nejprve se ujistěte, že v souboru stavu ještě nespouštět žádné příkazy. Pokud pracujete s místním stavovým souborem, zkontrolujte, jestli máte terminály, na kterých běží nějaké příkazy. Případně zkontrolujte kanály nasazení a zjistěte, jestli něco spuštěného může používat soubor stavu. Pokud se tím problém nevyřeší, je možné, že druhá příčina chybu aktivovala. V případě souboru vzdáleného stavu uloženého v kontejneru účtu služby Azure Storage můžete soubor najít a použít tlačítko Přerušit zapůjčení .

Screenshot that shows the Azure Storage container Break lease button.

Pokud k uložení souboru stavu používáte jiné back-endy, podívejte se na doporučení v dokumentaci k HashiCorp.

Chyby sítě VPN

Informace o řešení chyb SÍTĚ VPN najdete v článku Řešení potíží s hybridním připojením VPN.