Inicio rápido: Creación de una máquina virtual Nexus de operador de Azure mediante la plantilla de Azure Resource Manager (plantilla de ARM)
- Implemente una máquina virtual de Azure Nexus mediante una plantilla de Azure Resource Manager.
Esta guía de inicio rápido está diseñada para ayudarle a empezar a usar máquinas virtuales Nexus para hospedar funciones de red virtual (VNF). Siguiendo los pasos descritos en esta guía, podrá crear de forma rápida y sencilla una máquina virtual Nexus personalizada que satisfaga sus necesidades y requisitos específicos. Tanto si es principiante como experto en redes Nexus, esta guía está aquí para ayudarle. Aprenderá todo lo que necesita saber para crear y personalizar máquinas virtuales Nexus para hospedar funciones de red virtual.
Antes de empezar
Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Inicio rápido para Bash en Azure Cloud Shell.
Si prefiere ejecutar comandos de referencia de la CLI localmente, instale la CLI de Azure. Si utiliza Windows o macOS, considere la posibilidad de ejecutar la CLI de Azure en un contenedor Docker. Para más información, vea Ejecución de la CLI de Azure en un contenedor de Docker.
Si usa una instalación local, inicie sesión en la CLI de Azure mediante el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Inicio de sesión con la CLI de Azure.
En caso de que se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para más información sobre las extensiones, consulte Uso de extensiones con la CLI de Azure.
Ejecute az version para buscar cuál es la versión y las bibliotecas dependientes que están instaladas. Para realizar la actualización a la versión más reciente, ejecute az upgrade.
Instale la versión más reciente de las extensiones necesarias de la CLI de Azure.
En este artículo se requiere la versión 2.61.0 o posterior de la CLI de Azure. Si usa Azure Cloud Shell, ya está instalada la versión más reciente.
Si tiene varias suscripciones de Azure, seleccione el id. de suscripción adecuado en el que se deben facturar los recursos con el comando
az account
.Antes de continuar con la creación de la máquina virtual, asegúrese de que la imagen de contenedor que se va a usar se cree según las instrucciones.
Cree un grupo de recursos con el comando
az group create
. Un grupo de recursos de Azure es un grupo lógico en el que se implementan y administran recursos de Azure. Cuando crea un grupo de recursos, se le pide que especifique una ubicación. Esta ubicación es la ubicación de almacenamiento de los metadatos del grupo de recursos y donde se ejecutan los recursos en Azure si no se especifica otra región durante la creación de recursos. En el ejemplo siguiente, se crea un grupo de recursos denominado myResourceGroup en la ubicación eastus.az group create --name myResourceGroup --location eastus
El ejemplo de salida siguiente es similar a la creación correcta del grupo de recursos:
{ "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup", "location": "eastus", "managedBy": null, "name": "myResourceGroup", "properties": { "provisioningState": "Succeeded" }, "tags": null }
Para implementar un archivo de Bicep o una plantilla de ARM, se necesita acceso de escritura en los recursos que implementa y acceso a todas las operaciones del tipo de recurso Microsoft.Resources/deployments. Por ejemplo, para implementar un clúster, necesita permisos Microsoft.NetworkCloud/virtualMachines/write and Microsoft.Resources/deployments/*. Para obtener una lista de roles y permisos, consulte Roles integrados de Azure.
Necesita el id. de recurso
custom location
del clúster de Operator Nexus de Azure.Debe crear varias redes según sus requisitos de carga de trabajo específicos y es esencial tener las direcciones IP adecuadas disponibles para las cargas de trabajo. Para garantizar una implementación fluida, es aconsejable consultar a los equipos de soporte técnico pertinentes para obtener ayuda.
- Complete los requisitos previos para implementar una máquina virtual Nexus.
Revisión de la plantilla
Antes de implementar la plantilla de máquina virtual, vamos a revisar el contenido para comprender su estructura.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmName": {
"type": "string",
"metadata": {
"description": "The name of Nexus virtual machine"
}
},
"location": {
"type": "string",
"metadata": {
"description": "The Azure region where the VM is to be deployed"
},
"defaultValue": "[resourceGroup().location]"
},
"extendedLocation": {
"type": "string",
"metadata": {
"description": "The custom location of the Nexus instance"
}
},
"tags": {
"type": "object",
"metadata": {
"description": "The metadata tags to be associated with the cluster resource"
},
"defaultValue": {}
},
"adminUsername": {
"type": "string",
"defaultValue": "azureuser",
"maxLength": 32,
"minLength": 1,
"metadata": {
"description": "The name of the administrator to which the ssh public keys will be added into the authorized keys."
}
},
"bootMethod": {
"type": "string",
"defaultValue": "UEFI",
"allowedValues": ["UEFI", "BIOS"],
"metadata": {
"description": "Selects the boot method for the virtual machine."
}
},
"cloudServicesNetworkId": {
"type": "string",
"metadata": {
"description": "The Cloud Services Network attachment ARM ID to attach to virtual machine."
}
},
"cpuCores": {
"type": "int",
"defaultValue": 2,
"metadata": {
"description": "Number of CPU cores for the virtual machine. Choose a value between 2 and 46."
}
},
"memorySizeGB": {
"type": "int",
"defaultValue": 4,
"metadata": {
"description": "The memory size of the virtual machine in GiB (max 224 GiB)"
}
},
"networkAttachments": {
"type": "array",
"metadata": {
"description": "The list of network attachments to the virtual machine."
}
/*
{
"attachedNetworkId": "string",
"defaultGateway": "True"/"False",
"ipAllocationMethod": "Dynamic"/"Static"/"Disabled",
"ipv4Address": "string",
"ipv6Address": "string",
"networkAttachmentName": "string"
}
*/
},
"networkData": {
"type": "string",
"metadata": {
"description": "The Base64 encoded cloud-init network data."
},
"defaultValue": ""
},
"placementHints": {
"type": "array",
"metadata": {
"description": "The placement hints for the virtual machine."
},
"defaultValue": []
/*
{
"hintType": "Affinity",
"resourceId": "string",
"schedulingExecution": "Hard",
"scope": "Rack"
}
*/
},
"sshPublicKeys": {
"type": "array",
"metadata": {
"description": "The list of SSH public keys for the virtual machine."
}
/*
{
"keyData": "string"
}
*/
},
"storageProfile": {
"type": "object",
"metadata": {
"description": "StorageProfile represents information about a disk."
},
"defaultValue": {
"osDisk": {
"createOption": "Ephemeral",
"deleteOption": "Delete",
"diskSizeGB": 64
}
}
},
"userData": {
"type": "string",
"metadata": {
"description": "The Base64 encoded cloud-init user data."
},
"defaultValue": ""
},
"vmDeviceModel": {
"type": "string",
"defaultValue": "T2",
"allowedValues": ["T1", "T2"],
"metadata": {
"description": "The type of the device model to use."
}
},
"vmImage": {
"type": "string",
"metadata": {
"description": "The virtual machine image that is currently provisioned to the OS disk, using the full URL and tag notation used to pull the image."
}
},
"vmImageRepositoryCredentials": {
"type": "object",
"metadata": {
"description": "Credentials used to login to the image repository."
},
"defaultValue": {}
/*
"password": "string",
"registryUrl": "string",
"username": "string"
*/
}
},
"resources": [
{
"type": "Microsoft.NetworkCloud/virtualMachines",
"apiVersion": "2024-07-01",
"name": "[parameters('vmName')]",
"location": "[parameters('location')]",
"extendedLocation": {
"type": "CustomLocation",
"name": "[parameters('extendedLocation')]"
},
"tags": "[parameters('tags')]",
"properties": {
"adminUsername": "[if(empty(parameters('adminUsername')), json('null'), parameters('adminUsername'))]",
"bootMethod": "[if(empty(parameters('bootMethod')), json('null'), parameters('bootMethod'))]",
"cloudServicesNetworkAttachment": {
"attachedNetworkId": "[parameters('cloudServicesNetworkId')]",
"ipAllocationMethod": "Dynamic"
},
"cpuCores": "[parameters('cpuCores')]",
"memorySizeGB": "[parameters('memorySizeGB')]",
"networkData": "[if(empty(parameters('networkData')), json('null'), parameters('networkData'))]",
"networkAttachments": "[if(empty(parameters('networkAttachments')), json('null'), parameters('networkAttachments'))]",
"placementHints": "[if(empty(parameters('placementHints')), json('null'), parameters('placementHints'))]",
"sshPublicKeys": "[if(empty(parameters('sshPublicKeys')), json('null'), parameters('sshPublicKeys'))]",
"storageProfile": "[if(empty(parameters('storageProfile')), json('null'), parameters('storageProfile'))]",
"userData": "[if(empty(parameters('userData')), json('null'), parameters('userData'))]",
"vmDeviceModel": "[if(empty(parameters('vmDeviceModel')), json('null'), parameters('vmDeviceModel'))]",
"vmImage": "[if(empty(parameters('vmImage')), json('null'), parameters('vmImage'))]",
"vmImageRepositoryCredentials": "[if(empty(parameters('vmImageRepositoryCredentials')), json('null'), parameters('vmImageRepositoryCredentials'))]"
}
}
]
}
Advertencia
Los datos de usuario no se cifrarán y cualquier proceso de la máquina virtual puede consultarlos. No debe almacenar información confidencial en los datos de usuario. Para obtener más información, consulte Procedimientos recomendados de cifrado y seguridad de datos de Azure.
Una vez que haya revisado y guardado el archivo de plantilla denominado virtual-machine-arm-template.json
, continúe con la sección siguiente para implementar la plantilla.
Implementación de la plantilla
- Cree un archivo denominado
virtual-machine-parameters.json
y agregue los parámetros necesarios en formato JSON. Puede usar el ejemplo siguiente como punto de partida. Reemplace los valores por los suyos.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmName": {
"value": "myNexusVirtualMachine"
},
"location": {
"value": "eastus"
},
"extendedLocation": {
"value": "/subscriptions/<subscription>/resourcegroups/<cluster-managed-resource-group>/providers/microsoft.extendedlocation/customlocations/<custom-location-name>"
},
"cloudServicesNetworkId": {
"value": "/subscriptions/<subscription>/resourceGroups/<network-resource-group>/providers/Microsoft.NetworkCloud/cloudServicesNetworks/<csn-name>"
},
"networkAttachments": {
"value": [
{
"attachedNetworkId": "/subscriptions/<subscription>/resourceGroups/<network-resource-group>/providers/Microsoft.NetworkCloud/l3Networks/<l3network-name>",
"ipAllocationMethod": "Dynamic",
"defaultGateway": "True",
"networkAttachmentName": "mgmt0"
}
]
},
"sshPublicKeys": {
"value": [
{
"keyData": "ssh-rsa AAAAB3...."
}
]
},
"vmImage": {
"value": "<Image ACR URL>"
},
"vmImageRepositoryCredentials": {
"value": {
"password": "********************",
"registryUrl": "<ACR registry URL>",
"username": "<ACR user name>"
}
}
}
}
- Implemente la plantilla.
az deployment group create --resource-group myResourceGroup --template-file virtual-machine-arm-template.json --parameters @virtual-machine-parameters.json
Revisión de los recursos implementados
Una vez finalizada la implementación, puede ver los recursos mediante la CLI o Azure Portal.
Para ver los detalles del clúster de myNexusVirtualMachine
en el grupo de recursos de myResourceGroup
, ejecute lo siguiente
az networkcloud virtualmachine show --name myNexusVirtualMachine --resource-group myResourceGroup
Limpieza de recursos
Cuando ya no necesite el grupo de recursos, elimínelo. Se eliminan el grupo de recursos y todos los recursos del grupo de recursos.
Use el comando az group delete para eliminar el grupo de recursos, la máquina virtual y todos los recursos relacionados, a excepción de los recursos de red de Operator Nexus.
az group delete --name myResourceGroup --yes --no-wait
Pasos siguientes
Ha creado correctamente una máquina virtual Nexus. Ahora puede usar la máquina virtual para hospedar funciones de red virtual (VNF).