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
,query
mapping 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
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor