Jak funguje Azure Export pro Terraform
Tento článek vás seznámí s pracovními postupy Azure Exportu pro Terraform . V tomto článku se dozvíte o osvědčených postupech nástroje, aktuálních omezeních a o tom, jak tato omezení zmírnit.
Interaktivní režim
Ve výchozím nastavení běží Azure Export pro Terraform v interaktivním režimu. Když spustíte interaktivní režim, zobrazí se v dolní části displeje dostupné klávesové zkratky.
Úloha | Klávesové zkratky |
---|---|
Navigace | |
V seznamu prostředků vyberte předchozí položku. | ■ -nebo- k |
V seznamu prostředků vyberte další položku. | ▼ -or- j |
Přechod na předchozí stránku v seznamu prostředků | ← -or- h -or- Page Up |
Přechod na další stránku v seznamu prostředků | → -nebo- l -or- Page Down |
Přejděte na začátek seznamu prostředků. | g -or- Home |
Přejděte na konec seznamu prostředků. | G -or- End |
Výběr prostředků, které chcete přeskočit | |
Přeskočit prostředek (nebo zrušit jeho vynechání, pokud je označený jako Přeskočit) | Odstranění |
Operace filtrování | |
Definujte filtr podle textu v seznamu prostředků. | / |
Vymazání libovolného aktuálního filtru | Esc |
Operace ukládání | |
Uložte soubor mapování seznamu prostředků. Výstupní soubor je ovlivněn přeskočením (ale ne filtrováním). | s |
Exportujte prostředky do stavu (pokud --hcl-only není zadáno) a vygenerujte konfiguraci. |
W |
Uživatelské prostředí | |
Zobrazení doporučení pro aktuální prostředek | R |
Zobrazí chyby exportu prostředků (pokud existuje). | E |
Zobrazit nápovědu. | ? |
Ukončete | |
Ukončete interaktivní režim. | Q |
Pro každý prostředek se Azure Export for Terraform pokusí rozpoznat odpovídající typ prostředku Terraform. Pokud najde shodu, je řádek označen následujícím indikátorem: 💡.
Pokud se prostředek nedá přeložit, musíte zadat adresu prostředku Terraformu v následujícím formátu: <resource type>.<resource name>
Například azurerm_linux_virtual_machine.test
odkazuje na typ prostředku Terraform azurerm_linux_virtual_machine, zatímco test
odkazuje na název virtuálního počítače použitého v konfiguračních souborech.
Pokud chcete zobrazit dostupné typy prostředků pro vybraný prostředek, stiskněte klávesu r.
V některých případech existují prostředky Azure, které nemají odpovídající prostředky Terraformu, například pokud prostředek nemá podporu Terraformu. Některé prostředky se také můžou vytvořit jako vedlejší účinek zřizování jiného prostředku, například prostředku disku s operačním systémem, který se vytvoří při zřizování virtuálního počítače. V těchto případech můžete prostředky přeskočit bez přiřazení čehokoli.
Po dokončení importu všech prostředků stiskněte klávesu w a začněte generovat konfiguraci Terraformu a (pokud --hcl-only
není vybráno) import do stavu Terraformu.
Neinteraktivní režim
Ve výchozím nastavení běží Azure Export pro Terraform v interaktivním režimu. Pokud chcete určit, že se má nástroj spustit v neinteraktivním režimu, zadejte --non-interactive
příznak.
aztfexport [command] --non-interactive <scope>
Důležité
Pokud adresář, ve kterém používáte Azure Export for Terraform, není prázdný, musíte k použití příznaku --hcl-only
přidat --overwrite
příznak.
Osvědčené postupy pro základní pracovní postupy
Na základní úrovni čelí každý uživatel služby Azure Export rozhodnutí mezi dvěma možnostmi:
Následující pododdíly poskytují pokyny k tomu, jakou možnost na základě scénáře použít.
Správa infrastruktury
Možná nebudete muset exportovat do stavu, pokud jste neověřili, že se nakonfigurované prostředky chovají v rámci vašeho prostředí požadovaným způsobem.
Pokud si opravdu přejete spravovat sadu prostředků v Terraformu pomocí terraform init plan apply
pracovních postupů, je export do stavu nezbytný.
Pokud si nejste jistí, že ještě chcete spravovat prostředky, doporučuje se předat --hcl-only
příznak.
Existující infrastruktura
Ve scénářích, ve kterých exportujete do existujících prostředí Terraformu, může být užitečné si představit --hcl-only
jako ekvivalent plánu terraformu, zejména před připojením k existujícím prostředím.
Příkaz terraform apply
se rovná exportu prostředků – během kterých se jejich konfigurace spojuje do existujícího stavu. V tomto scénáři při použití souboru mapování ušetříte čas spuštění pro výpis a mapování prostředků.
Zjišťování infrastruktury
Pokud si nejste jistí, jaké prostředky v prostředí existují, můžete to ověřit zadáním příznaku --generate-mapping-file
. Další informace o tomto předmětu najdete v tématu Zkoumání přizpůsobeného výběru prostředků a pojmenování pomocí služby Azure Export pro Terraform.
Omezení
Azure Export for Terraform je složitý nástroj, který se pokouší převést infrastrukturu Azure na kód a stav Terraformu. Jeho aktuální známá omezení jsou vysvětlena v následujících pododdílech.
Vlastnosti jen pro zápis
Některé vlastnosti v rámci AzureRM jsou jen pro zápis a nejsou zahrnuty do vygenerovaného kódu, který Azure Export pro Terraform vytvoří. Problém je vyřešen definováním vlastnosti po exportu do kódu HCL.
Omezení mezi vlastnostmi
Zprostředkovatel AzureRM může nastavit dvě vlastnosti, které jsou vzájemně v konfliktu. Když Azure Export pro Terraform čte konfliktní vlastnosti, může nastavit obě vlastnosti na stejnou hodnotu, i když uživatel konfiguruje jenom jednu. Další komplikace se objeví, když v rámci stejné vygenerované konfigurace existuje více omezení mezi vlastnostmi. Abyste mohli tento problém zmírnit, musíte vědět, kde v konfiguraci existují konflikty mezi vlastnostmi.
Infrastruktura mimo rozsah prostředků
Pokud k cílovým oborům prostředků používáte Azure Export for Terraform, můžou existovat prostředky potřebné pro konfiguraci mimo zadaný obor. Jedním z příkladů je přiřazení role. Uživatel musí identifikovat prostředky, které jsou mimo rozsah.
Vlastnosti jen pro zápis
Azure Export nemůže v rámci konfigurace generovat vlastnosti jen pro zápis (například hesla). Potřebujete vědět o vlastnostech jen pro zápis a definovat je v konfiguraci pro vytvoření nových sad prostředků.
Úprava kódu tak, aby odpovídal standardům kódování
Existuje několik nezbytných operací, pokud chce uživatel upravit kód tak, aby se řídil standardy kódování. Tyto kroky by byly nezbytné pouze v případě, že uživatel plánuje používat kód v prostředích, která nejsou v prostředích mimo službu.
Prostředky definované vlastností
Některé prostředky v Azure je možné definovat jako vlastnost nadřazeného prostředku Terraformu nebo jako jednotlivé prostředky Terraformu. Jedním z příkladů je podsíť. Azure Export for Terraform definuje prostředek jako jednotlivý prostředek, ale osvědčeným postupem je spárovat stávající konfiguraci kódování.
Explicitní závislosti
Azure Export pro Terraform je v současné době schopný deklarovat pouze explicitní závislosti. Abyste mohli refaktorovat kód tak, aby zahrnoval všechny potřebné implicitní závislosti, musíte znát mapování vztahů mezi prostředky.
Pevně zakódované hodnoty
Azure Export pro Terraform v současné době generuje pevně zakódované řetězce. Osvědčeným postupem je refaktorovat tyto hodnoty na proměnné. Při použití příznaku --full-properties
ke zveřejnění všech vlastností se vygenerované konfiguraci dají zobrazit některé citlivé informace (například tajné kódy). K ochraně viditelnosti tohoto kódu použijte doporučené postupy.