Share via


Aangepaste resourceselectie en -naamgeving met behulp van Azure Export voor Terraform

Azure Export voor Terraform biedt verschillende opties om aan te passen welke resources u exporteert.

In dit artikel leert u voor- en nadelen voor elke optie.

  • De gebruikersinterface gebruiken
  • Querymodus gebruiken
  • Een toewijzingsbestand gebruiken

De gebruikersinterface gebruiken

Wanneer u Azure Export voor Terraform uitvoert in de interactieve modus, worden de opgegeven resources (via de parameters die u opgeeft tijdens het uitvoeren) weergegeven. Standaard worden alle resources geëxporteerd.

Verwijderen fungeert als wisselknop bij het overslaan of opnemen van resources. Als u resources wilt verwijderen uit het exporteren, gebruikt u de pijltoetsen om de gewenste resource te selecteren en drukt u op Delete. De resource wordt bijgewerkt om 'Overslaan' weer te geven.

Als u de actie Overslaan ongedaan wilt maken, controleert u of de overgeslagen resource is geselecteerd en drukt u nogmaals op Delete .

Voordelen:

  • Hiervoor is het gebruik van één wisselknop vereist.
  • U hoeft de gewenste resources niet te kennen voordat u de opdracht uitvoert.

Nadelen:

  • Actie kan tijdrovend zijn als u veel resources hebt om door te schuiven en over te slaan.

Querymodus gebruiken

Het toepassen van een filter met behulp van azure Resource Graph-querysyntaxis is een krachtige techniek wanneer u precies weet welke filters u nodig hebt.

aztfexport query [option] <ARG_where_predicate>

Stel dat u een resourcegroep hebt met een naam myResourceGroup met veel resources, waaronder een netwerkresource. Als u alleen de netwerkresource wilt exporteren, kunt u de volgende syntaxis gebruiken:

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

Voordelen:

  • Eén opdracht zonder handmatig bewerken vereist.
  • Ondersteunt een onbeperkt aantal filters.
  • Hiermee wordt een grote hoeveelheid resources efficiënt verwerkt.

Nadelen:

  • Eenvoudig uit te sluiten van resources die u moet exporteren.
  • Vereist kennis van de Syntaxis van Azure Resource Graph.

Een toewijzingsbestand gebruiken

De volgende syntaxis toont de basisbeginselen voor het exporteren van een set resources die is gedefinieerd in een resourcetoewijzingsbestand:

aztfexport mapping-file [option] <resource_mapping_file>

U kunt een toewijzingsbestand gebruiken in interactieve of niet-interactieve modi:

  • Interactieve modus: Druk op s wanneer u interactief in de lijstweergave met resources werkt.
  • Niet-interactieve modus: u kunt het toewijzingsbestand genereren in alle exportopdrachten (resource, resource-group, querymapping file) door de --generate-mapping-file vlag toe te voegen.

Als voor uw gebruiksscenario's wijzigingen vooraf moeten worden geëxporteerd, kunt u het toewijzingsbestand handmatig maken of bewerken. Hier volgen enkele voorbeelden van wanneer u uw eigen toewijzingsbestand handmatig wilt bewerken:

Use-case Stappen
U hebt veel resources in een resourcegroep, maar u hoeft er maar een paar te exporteren. Verwijder de JSON-objecten uit de gewenste editor en sla het bestand op voordat u het exporteert.
U wilt de naam van al uw resources op een consistente manier wijzigen. Wijzig de resource-name eigenschap in elke naam die overeenkomt met de nalevingsstandaarden van uw bedrijf.
U moet een set resources herstructureren op basis van het resourcetype, zoals netwerken of compute. Gebruik uw editor om alle Microsoft.Network of Microsoft.Compute resources te zoeken.

Stel dat u de volgende opdracht uitvoert voor een resourcegroep die een virtuele machine bevat:

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

De resultaten zijn vergelijkbaar met het volgende JSON-bestand:

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

Alleen de objectwaarde in het toewijzingsbestand heeft significantie. De sleutel (standaard ingesteld op Azure resource_id) is slechts een id in deze modus.

Stel nu dat we de resourcegroep en eventuele rekenresources willen behouden en de resource_name waarde willen wijzigen.

We kunnen het toewijzingsbestand als volgt bijwerken:

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

Nadat u het toewijzingsbestand hebt bewerkt, exporteert u het toewijzingsbestand met behulp van de volgende opdracht:

aztfexport map -n "aztfexportResourceMapping.json"

Voordelen:

  • Omdat u een bestand bewerkt, kunt u een editor gebruiken om te zoeken en te vervangen wat u moet verwijderen of bewerken.
  • JSON-uitvoer maakt unieke functionaliteit mogelijk, zoals het filteren van scripts.
  • Kan de naam van resources wijzigen zodat deze overeenkomen met uw naamgevingsstandaarden.
  • Kan JSON herstructureren in meerdere toewijzingsbestanden.
  • Verwerkt grote hoeveelheden resources goed.

Nadelen:

  • Voor eenvoudige scenario's kan deze techniek overkill zijn.
  • Hiervoor zijn handmatige wijzigingen vereist.

Samenvatting

In dit artikel hebt u geleerd over de verschillende opties voor het filteren van resources bij het exporteren met Azure Export voor Terraform.

Volgende stappen