Share via


Angepasste Ressourcenauswahl und Benennung mit Azure Export für Terraform

Azure Export für Terraform bietet verschiedene Optionen, um anzupassen, welche Ressourcen Sie exportieren.

In diesem Artikel lernen Sie Pros und Nachteile für jede Option kennen.

  • Verwenden der Benutzeroberfläche
  • Verwenden des Abfragemodus
  • Verwenden einer Zuordnungsdatei

Verwenden der Benutzeroberfläche

Wenn Sie Azure Export für Terraform im interaktiven Modus ausführen, werden die angegebenen Ressourcen (über die Parameter, die Sie beim Ausführen angeben) angezeigt. Standardmäßig werden alle Ressourcen exportiert.

Das Löschen dient als Umschaltfläche beim Überspringen oder Einschließen von Ressourcen. Zum Entfernen von Ressourcen, die exportiert werden sollen, verwenden Sie die Pfeiltasten, um die gewünschte Ressource auszuwählen, und drücken Sie ENTF. Die Ressource wird aktualisiert, um "Überspringen" anzuzeigen.

Um die Aktion "Überspringen" rückgängig zu machen, überprüfen Sie, ob die übersprungene Ressource ausgewählt ist, und drücken Sie erneut ENTF .

Vorteile:

  • Erfordert die Verwendung einer einzelnen Umschalttaste.
  • Sie müssen die gewünschten Ressourcen nicht kennen, bevor Sie den Befehl ausführen.

Nachteile:

  • Die Aktion kann zeitaufwändig sein, wenn Sie viele Ressourcen zum Scrollen und Überspringen haben.

Verwenden des Abfragemodus

Das Anwenden eines Filters mithilfe der Azure Resource Graph-Abfragesyntax ist eine leistungsstarke Technik, wenn Sie genau wissen, welche Filter Sie benötigen.

aztfexport query [option] <ARG_where_predicate>

Nehmen wir beispielsweise an, Sie haben eine Ressourcengruppe mit dem Namen myResourceGroup , die viele Ressourcen enthält, einschließlich einer Netzwerkressource. Wenn Sie nur die Netzwerkressource exportieren möchten, können Sie die folgende Syntax verwenden:

aztfexport query -n "resourceGroup =~ 'myResourceGroup' and type contains 'Microsoft.Network'"

Vorteile:

  • Einzelner Befehl ohne manuelle Bearbeitung erforderlich.
  • Unterstützt eine unbegrenzte Anzahl von Filtern.
  • Verarbeitet eine große Menge an Ressourcen effizient.

Nachteile:

  • Einfaches Ausschließen von Ressourcen, die Sie exportieren müssen.
  • Erfordert Kenntnisse der Azure Resource Graph-Syntax.

Verwenden einer Zuordnungsdatei

Die folgende Syntax zeigt die Grundlagen zum Exportieren einer Gruppe von Ressourcen, die in einer Ressourcenzuordnungsdatei definiert sind:

aztfexport mapping-file [option] <resource_mapping_file>

Sie können eine Zuordnungsdatei in interaktiven oder nicht interaktiven Modi verwenden:

  • Interaktiver Modus: Drücken Sie s , wenn sie interaktiv in der Ressourcenlistenansicht ausgeführt werden.
  • Nicht interaktiver Modus: Sie können die Zuordnungsdatei in allen Exportbefehlen (resource, , , mapping filequery) generieren, resource-groupindem Sie das --generate-mapping-file Flag hinzufügen.

Wenn Ihre Anwendungsfälle Vorexportänderungen erfordern, können Sie die Zuordnungsdatei manuell erstellen oder bearbeiten. Im Folgenden finden Sie einige Beispiele dafür, wann Sie Ihre eigene Zuordnungsdatei manuell bearbeiten möchten:

Anwendungsfall Schritte
Sie verfügen über viele Ressourcen in einer Ressourcengruppe, müssen aber nur einige ausgewählte Ressourcen exportieren. Löschen Sie die JSON-Objekte aus Ihrem Editor der Wahl, und speichern Sie die Datei vor dem Exportieren.
Sie möchten alle Ihre Ressourcen auf einheitliche Weise umbenennen. Ändern Sie die resource-name Eigenschaft in einen beliebigen Namen, der Ihren Compliancestandards Ihres Unternehmens entspricht.
Sie müssen eine Reihe von Ressourcen anhand ihres Ressourcentyps umgestalten – z. B. Netzwerk oder Compute. Verwenden Sie Ihren Editor, um alle Microsoft.Network Ressourcen oder Microsoft.Compute Ressourcen zu finden.

Angenommen, Sie führen den folgenden Befehl für eine Ressourcengruppe aus, die einen virtuellen Computer enthält:

aztfexport rg --generate-mapping-file --non-interactive myResourceGroup

Die Ergebnisse ähneln der folgenden JSON-Datei:

{
	"/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"
	}
}

Nur der Objektwert in der Zuordnungsdatei hat Bedeutung. Der Schlüssel (Standardeinstellung für Azure resource_id) ist nur ein Bezeichner in diesem Modus.

Angenommen, wir möchten die Ressourcengruppe und alle computebezogenen Ressourcen beibehalten und den resource_name Wert ändern.

Wir könnten die Zuordnungsdatei wie folgt aktualisieren:

{
	"/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"
	}
}

Nachdem Sie die Zuordnungsdatei bearbeitet haben, exportieren Sie die Zuordnungsdatei mit dem folgenden Befehl:

aztfexport map -n "aztfexportResourceMapping.json"

Vorteile:

  • Da Sie eine Datei bearbeiten, können Sie einen Editor verwenden, um zu suchen und zu ersetzen, was Sie entfernen oder bearbeiten müssen.
  • Die JSON-Ausgabe ermöglicht eine eindeutige Funktionalität , z. B. skripting zum Filtern.
  • Kann Ressourcen so umbenennen, dass sie Ihren Benennungsstandards entsprechen.
  • Kann JSON in mehrere Zuordnungsdateien umgestalten.
  • Behandelt große Mengen an Ressourcen gut.

Nachteile:

  • Für einfache Szenarien kann diese Technik überqualifizierungen sein.
  • Erfordert manuelle Änderungen.

Zusammenfassung

In diesem Artikel haben Sie die verschiedenen Optionen zum Filtern von Ressourcen beim Exportieren mit Azure Export für Terraform kennengelernt.

Nächste Schritte