Ř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
- Dotazy, případy použití a užitečné vzory: Část Terraformu na portálu komunity HashiCorp
- Dotazy související s poskytovatelem: Část Poskytovatelé Terraformu na portálu komunity HashiCorp
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í .
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.