Přizpůsobení výběru a pojmenování prostředků pomocí služby Azure Export pro Terraform
Azure Export for Terraform nabízí různé možnosti přizpůsobení prostředků, které exportujete.
V tomto článku se naučíte výhody a nevýhody pro každou možnost.
- Použití uživatelského rozhraní
- Použití režimu dotazu
- Použití souboru mapování
Použití uživatelského rozhraní
Když spustíte Azure Export pro Terraform v interaktivním režimu, zobrazí se zadané prostředky (prostřednictvím parametrů, které zadáte při spuštění). Ve výchozím nastavení se exportují všechny prostředky.
Odstranění funguje jako přepínač při vynechání nebo zahrnutí prostředků. Pokud chcete odebrat prostředky z exportu, vyberte požadovaný prostředek pomocí kláves se šipkami a stiskněte Klávesu Delete. Prostředek se aktualizuje tak, aby zobrazoval přeskočení.
Pokud chcete akci přeskočit vrátit zpět, ověřte, že je vybraný vynechaný prostředek, a stiskněte znovu klávesu Delete .
Profesionálové:
- Vyžaduje použití jediného přepínacího tlačítka.
- Před spuštěním příkazu nemusíte znát požadované prostředky.
Nevýhody:
- Akce může být časově náročná, pokud máte k procházení a přeskočení mnoho zdrojů.
Použití režimu dotazu
Použití filtru pomocí syntaxe dotazů Azure Resource Graphu je výkonná technika, když přesně víte, jaké filtry potřebujete.
aztfexport query [option] <ARG_where_predicate>
Řekněme například, že máte skupinu prostředků s názvem myResourceGroup
mnoho prostředků, včetně síťového prostředku. Pokud chcete exportovat pouze síťový prostředek, můžete použít následující syntaxi:
aztfexport query -n "resourceGroup =~ 'myResourceGroup' and type contains 'Microsoft.Network'"
Profesionálové:
- Jeden příkaz bez nutnosti ručních úprav.
- Podporuje neomezený počet filtrů.
- Efektivně zpracovává velké množství prostředků.
Nevýhody:
- Snadno vyloučit prostředky, které potřebujete exportovat.
- Vyžaduje znalost syntaxe Azure Resource Graphu.
Použití souboru mapování
Následující syntaxe ukazuje základy exportu sady prostředků, které jsou definovány v souboru mapování prostředků:
aztfexport mapping-file [option] <resource_mapping_file>
Soubor mapování můžete použít v interaktivních nebo neinteraktivních režimech:
- Interaktivní režim: Stiskněte při interaktivním spuštění v zobrazení seznamu prostředků.
- Neinteraktivní režim: Soubor mapování můžete vygenerovat ve všech příkazech exportu (
resource
,resource-group
,query
,mapping file
) přidáním příznaku--generate-mapping-file
.
Pokud vaše případy použití vyžadují úpravy před exportem, můžete soubor mapování vytvořit nebo upravit ručně. Tady je několik příkladů, kdy byste chtěli ručně upravit vlastní soubor mapování:
Případ použití | Kroky |
---|---|
Ve skupině prostředků máte mnoho prostředků, ale stačí exportovat jenom několik vybraných prostředků. | Před exportem odstraňte objekty JSON z libovolného editoru a soubor uložte. |
Chcete přejmenovat všechny prostředky konzistentním způsobem. | resource-name Změňte vlastnost na jakýkoli název, který odpovídá standardům dodržování předpisů vaší společnosti. |
Potřebujete refaktorovat sadu prostředků podle jejich typu prostředku, jako jsou sítě nebo výpočetní prostředky. | Pomocí editoru vyhledejte všechny Microsoft.Network prostředky nebo Microsoft.Compute prostředky. |
Řekněme například, že spustíte následující příkaz pro skupinu prostředků, která obsahuje virtuální počítač:
aztfexport rg --generate-mapping-file --non-interactive myResourceGroup
Výsledky jsou podobné následujícímu souboru JSON:
{
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/vm-MyResourceGroup/extensions/OmsAgentForLinux": {
"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/vm-MyResourceGroup/extensions/OmsAgentForLinux",
"resource_type": "azurerm_virtual_machine_extension",
"resource_name": "res-0"
},
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup": {
"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup",
"resource_type": "azurerm_resource_group",
"resource_name": "res-1"
},
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/sshPublicKeys/vm-MyResourceGroup_key": {
"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/sshPublicKeys/vm-MyResourceGroup_key",
"resource_type": "azurerm_ssh_public_key",
"resource_name": "res-2"
},
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/vm-MyResourceGroup": {
"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/vm-MyResourceGroup",
"resource_type": "azurerm_linux_virtual_machine",
"resource_name": "res-3"
},
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/networkInterfaces/vm-myResourceGroup-vm-d146": {
"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/networkInterfaces/vm-myResourceGroup-vm-d146",
"resource_type": "azurerm_network_interface",
"resource_name": "res-4"
},
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/networkInterfaces/vm-myResourceGroup-vm-d146/networkSecurityGroups/L3N1YnNjcmlwdGlvbnMvZGJmM2I2Y2ItYzFkMC00ZDA0LTk0YjktNTE1MDliOGQzM2ZkL3Jlc291cmNlR3JvdXBzL2hhc2hpY29uZi12bS1kZW1vL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9uZXR3b3JrU2VjdXJpdHlHcm91cHMvdm0taGFzaGljb25mLXZtLWRlbW8tbnNn": {
"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/networkInterfaces/vm-myResourceGroup-vm-d146|/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/networkSecurityGroups/vm-MyResourceGroup-nsg",
"resource_type": "azurerm_network_interface_security_group_association",
"resource_name": "res-5"
},
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/networkSecurityGroups/vm-MyResourceGroup-nsg": {
"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/networkSecurityGroups/vm-MyResourceGroup-nsg",
"resource_type": "azurerm_network_security_group",
"resource_name": "res-6"
},
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/publicIPAddresses/vm-MyResourceGroup-ip": {
"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/publicIPAddresses/vm-MyResourceGroup-ip",
"resource_type": "azurerm_public_ip",
"resource_name": "res-7"
},
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/virtualNetworks/MyResourceGroup-vnet": {
"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/virtualNetworks/MyResourceGroup-vnet",
"resource_type": "azurerm_virtual_network",
"resource_name": "res-8"
},
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/virtualNetworks/MyResourceGroup-vnet/subnets/default": {
"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/virtualNetworks/MyResourceGroup-vnet/subnets/default",
"resource_type": "azurerm_subnet",
"resource_name": "res-9"
}
}
Význam má pouze hodnota objektu v souboru mapování. Klíč (výchozí nastavení Azure resource_id
) je pouze identifikátor v tomto režimu.
Teď řekněme, že chceme zachovat skupinu prostředků a všechny výpočetní prostředky a upravit resource_name
hodnotu.
Soubor mapování bychom mohli aktualizovat následujícím způsobem:
{
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup": {
"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup",
"resource_type": "azurerm_resource_group",
"resource_name": "myResourceGroup"
},
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM": {
"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM",
"resource_type": "azurerm_linux_virtual_machine",
"resource_name": "myVM"
},
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/sshPublicKeys/myKey": {
"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/sshPublicKeys/myKey",
"resource_type": "azurerm_ssh_public_key",
"resource_name": "myKey"
},
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/vm-myResourceGroup/extensions/OmsAgentForLinux": {
"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/vm-myResourceGroup/extensions/OmsAgentForLinux",
"resource_type": "azurerm_virtual_machine_extension",
"resource_name": "myVMExtension"
}
}
Po úpravě souboru mapování exportujete soubor mapování pomocí následujícího příkazu:
aztfexport map -n "aztfexportResourceMapping.json"
Profesionálové:
- Vzhledem k tomu, že upravujete soubor, můžete pomocí editoru najít a nahradit, co potřebujete k odebrání nebo úpravám.
- Výstup JSON umožňuje jedinečné funkce, například skriptování k filtrování.
- Prostředky můžete přejmenovat tak, aby odpovídaly vašim standardům pojmenování.
- Dokáže refaktorovat JSON na více souborů mapování.
- Zpracovává velké objemy prostředků dobře.
Nevýhody:
- U jednoduchých scénářů může být tato technika přílišná.
- Vyžaduje ruční úpravy.
Použití bloků importu Terraformu
Při spuštění aztfexport
v0.13
nebo vyšší společně s Terraformem v1.5
nebo novějším příkaz --generate-import-block
vygeneruje soubor mapování společně se souborem import.tf
. Soubor import.tf
obsahuje bloky importu pro každý z prostředků aztfexport
, které bylo možné mapovat. Od této chvíle je chování konfigurace stejné jako u existujícího pracovního postupu bloku importu. Chcete-li dokončit, spusťte terraform plan
příkaz .
Pokud chcete odstranit nebo filtrovat prostředky z výsledného exportu, můžete odstranit blok obsahující ID prostředku a další informace.
Porovnání bloků importu a Azure Exportu
Běžnou otázkou je rozdíl mezi používáním Azure Exportu pro Terraform a bloky importu. Mezi tyto dva nástroje, které jsme si všimli, patří:
- Azure Export for Terraform pomáhá při zjišťování prostředků. K dispozici jsou různé metody, které vám pomůžou zjišťovat a exportovat požadované prostředky.
- Azure Export for Terraform poskytuje filtrování prostředků také prostřednictvím ručních a automatizovaných prostředků.
- Azure Export pro Terraform automaticky generuje bloky importu s jeho výstupy, což šetří čas a úsilí při procesu vytváření.
- Bloky importu Terraformu jsou nativně podporované v Terraformu, což usnadňuje jejich použití. Společně věříme, že použití obou poskytuje pro vás obrovskou výhodu.
Profesionálové:
- Nativní podporovaný pracovní postup Terraformu Není potřeba žádný JSON.
- Vzhledem k tomu, že upravujete soubor, můžete pomocí editoru najít a nahradit, co potřebujete k odebrání nebo úpravám.
- Prostředky můžete přejmenovat tak, aby odpovídaly vašim standardům pojmenování.
- Zpracovává velké objemy prostředků dobře.
Nevýhody:
- U jednoduchých scénářů může být tato technika přílišná.
- Vyžaduje ruční úpravy filtru.
- Nefunguje se staršími verzemi Terraformu.
Shrnutí
V tomto článku jste se dozvěděli o různých možnostech filtrování prostředků při exportu pomocí Azure Exportu pro Terraform.