Compartir a través de


Selección y nomenclatura de recursos personalizados mediante Azure Export para Terraform

Azure Export para Terraform proporciona varias opciones para personalizar los recursos que exporta.

En este artículo, aprenderá ventajas y desventajas para cada opción.

  • Uso de la interfaz de usuario
  • Uso del modo de consulta
  • Uso de un archivo de asignación

Uso de la interfaz de usuario

Al ejecutar Azure Export para Terraform en modo interactivo, se muestran los recursos especificados (a través de los parámetros que especifique al ejecutar). De forma predeterminada, se exportan todos los recursos.

Delete actúa como un botón de alternancia en la omisión o inclusión de recursos. Para quitar recursos de la exportación, use las teclas de dirección para seleccionar el recurso deseado y presione Eliminar. El recurso se actualiza para mostrar "Skip".

Para deshacer la acción omitir, compruebe que el recurso omitido está seleccionado y presione Eliminar de nuevo.

Ventajas:

  • Requiere el uso de una sola tecla de alternancia.
  • No es necesario conocer los recursos que desea antes de ejecutar el comando.

Inconvenientes:

  • La acción puede llevar mucho tiempo si tiene muchos recursos para desplazarse por y omitir.

Uso del modo de consulta

Aplicar un filtro mediante la sintaxis de consulta de Azure Resource Graph es una técnica eficaz cuando sabe exactamente qué filtros necesita.

aztfexport query [option] <ARG_where_predicate>

Por ejemplo, supongamos que tiene un grupo de recursos denominado myResourceGroup que tiene muchos recursos, incluido un recurso de red. Si desea exportar solo el recurso de red, puede usar la sintaxis siguiente:

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

Ventajas:

  • Comando único sin que se requiera edición manual.
  • Admite un número ilimitado de filtros.
  • Controla una gran cantidad de recursos de forma eficaz.

Inconvenientes:

  • Fácil de excluir recursos que necesita exportar.
  • Requiere conocimientos sobre la sintaxis de Azure Resource Graph.

Uso de un archivo de asignación

La sintaxis siguiente muestra los conceptos básicos para exportar un conjunto de recursos que se define en un archivo de asignación de recursos:

aztfexport mapping-file [option] <resource_mapping_file>

Puede usar un archivo de asignación en modos interactivos o no interactivos:

  • Modo interactivo: presione s al ejecutarse de forma interactiva en la vista de lista de recursos.
  • Modo no interactivo: puede generar el archivo de asignación en todos los comandos de exportación (resource, resource-group, query, mapping file) agregando la --generate-mapping-file marca .

Si los casos de uso requieren modificaciones previas a la exportación, puede construir o editar manualmente el archivo de asignación. Estos son algunos ejemplos de cuándo desea editar manualmente su propio archivo de asignación:

Caso de uso Pasos
Tiene muchos recursos en un grupo de recursos, pero solo necesita exportar algunos seleccionados. Elimine los objetos JSON del editor que prefiera y guarde el archivo antes de exportarlo.
Quiere cambiar el nombre de todos los recursos de forma coherente. Cambie la resource-name propiedad a cualquier nombre que coincida con los estándares de cumplimiento de la empresa.
Debe refactorizar un conjunto de recursos por su tipo de recurso, como redes o proceso. Use el editor para buscar todos los Microsoft.Network recursos o Microsoft.Compute .

Por ejemplo, supongamos que ejecuta el siguiente comando para un grupo de recursos que contiene una máquina virtual:

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

Los resultados son similares al siguiente archivo 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"
	}
}

Solo el valor de objeto del archivo de asignación tiene importancia. La clave (el valor predeterminado es Azure resource_id) es solo un identificador en este modo.

Ahora, supongamos que queremos mantener el grupo de recursos y los recursos relacionados con el proceso y modificar el resource_name valor.

Podríamos actualizar el archivo de asignación de la siguiente manera:

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

Una vez que haya editado el archivo de asignación, exporte el archivo de asignación mediante el siguiente comando:

aztfexport map -n "aztfexportResourceMapping.json"

Ventajas:

  • Como está editando un archivo, puede usar un editor para buscar y reemplazar lo que necesita para quitar o editar.
  • La salida JSON permite una funcionalidad única, como el scripting para filtrar.
  • Puede cambiar el nombre de los recursos para que coincidan con los estándares de nomenclatura.
  • Puede refactorizar JSON en varios archivos de asignación.
  • Controla grandes cantidades de recursos.

Inconvenientes:

  • En escenarios simples, esta técnica podría ser excesiva.
  • Requiere modificaciones manuales.

Resumen

En este artículo, ha obtenido información sobre las distintas opciones para filtrar los recursos al exportar con Azure Export para Terraform.

Pasos siguientes