Delen via


Quickstart: Een virtuele Machine van Azure Operator Nexus maken met behulp van een Azure Resource Manager-sjabloon (ARM-sjabloon)

  • Implementeer een virtuele Azure Nexus-machine met behulp van een Azure Resource Manager-sjabloon.

Deze quickstartgids is ontworpen om u te helpen aan de slag te gaan met het gebruik van virtuele Nexus-machines om virtuele netwerkfuncties (VNF's) te hosten. Door de stappen te volgen die in deze handleiding worden beschreven, kunt u snel en eenvoudig een aangepaste Nexus-VM maken die voldoet aan uw specifieke behoeften en vereisten. Of u nu een beginner of expert bent in Nexus-netwerken, deze gids is er om u te helpen. U leert alles wat u moet weten om nexus virtuele machines te maken en aan te passen voor het hosten van virtuele netwerkfuncties.

Voordat u begint

Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.

  • Installeer de nieuwste versie van de benodigde Azure CLI-extensies.

  • Voor dit artikel is versie 2.61.0 of hoger van de Azure CLI vereist. Als u Azure Cloud Shell gebruikt, is de nieuwste versie al geïnstalleerd.

  • Als u meerdere Azure-abonnementen hebt, selecteert u de juiste abonnements-id waarin de resources moeten worden gefactureerd met behulp van de az account opdracht.

  • Voordat u doorgaat met het maken van virtuele machines, moet u ervoor zorgen dat de te gebruiken containerinstallatiekopie volgens de instructies wordt gemaakt.

  • Maak een resourcegroep met behulp van de az group create opdracht. Een Azure-resourcegroep is een logische groep waarin Azure-resources worden geïmplementeerd en beheerd. Wanneer u een resourcegroep maakt, wordt u gevraagd een locatie op te geven. Deze locatie is de opslaglocatie van de metagegevens van uw resourcegroep en waar uw resources worden uitgevoerd in Azure als u geen andere regio opgeeft tijdens het maken van de resource. In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroup gemaakt op de locatie VS - oost.

    az group create --name myResourceGroup --location eastus
    

    Het volgende uitvoervoorbeeld lijkt op het maken van de resourcegroep:

    {
      "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
      "location": "eastus",
      "managedBy": null,
      "name": "myResourceGroup",
      "properties": {
        "provisioningState": "Succeeded"
      },
      "tags": null
    }
    
  • Als u een Bicep-bestand of ARM-sjabloon wilt implementeren, hebt u schrijftoegang nodig voor de resources die u implementeert en moet u zijn gemachtigd om alle bewerkingen op het resourcetype Microsoft.Resources/deployments te kunnen uitvoeren. Als u bijvoorbeeld een cluster wilt implementeren, hebt u machtigingen voor Microsoft.NetworkCloud/virtualMachines/write en Microsoft.Resources/deployments/* nodig. Zie Ingebouwde Azure-rollen voor een lijst met rollen en machtigingen.

  • U hebt de custom location resource-id van uw Azure Operator Nexus-cluster nodig.

  • U moet verschillende netwerken maken op basis van uw specifieke workloadvereisten en het is essentieel dat de juiste IP-adressen beschikbaar zijn voor uw workloads. Om een soepele implementatie te garanderen, is het raadzaam om de relevante ondersteuningsteams te raadplegen voor hulp.

  • Voltooi de vereisten voor het implementeren van een virtuele Nexus-machine.

De sjabloon controleren

Voordat u de sjabloon voor virtuele machines implementeert, bekijken we de inhoud om de structuur ervan te begrijpen.

{
    "$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'))]"
            }
        }
    ]
  }

Waarschuwing

Gebruikersgegevens worden niet versleuteld en elk proces op de VIRTUELE machine kan deze gegevens opvragen. U mag geen vertrouwelijke informatie opslaan in gebruikersgegevens. Zie best practices voor azure-gegevensbeveiliging en -versleuteling voor meer informatie.

Zodra u het sjabloonbestand met de naam virtual-machine-arm-template.jsonhebt bekeken en opgeslagen, gaat u verder met de volgende sectie om de sjabloon te implementeren.

De sjabloon implementeren

  1. Maak een bestand met de naam virtual-machine-parameters.json en voeg de vereiste parameters toe in JSON-indeling. U kunt het volgende voorbeeld als uitgangspunt gebruiken. Vervang de waarden door uw eigen waarden.
{
    "$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>"
          }
      }
    }
  }
  1. De sjabloon implementeren.
    az deployment group create --resource-group myResourceGroup --template-file virtual-machine-arm-template.json --parameters @virtual-machine-parameters.json

Geïmplementeerde resources bekijken

Nadat de implementatie is voltooid, kunt u de resources weergeven met behulp van de CLI of Azure Portal.

Als u de details van het myNexusVirtualMachine cluster in de myResourceGroup resourcegroep wilt weergeven, voert u het volgende uit

az networkcloud virtualmachine show --name myNexusVirtualMachine --resource-group myResourceGroup

Resources opschonen

Verwijder de resourcegroep als u deze niet meer nodig hebt. De resourcegroep en alle resources in de resourcegroep worden verwijderd.

Gebruik de opdracht az group delete om de resourcegroep, virtuele machine en alle gerelateerde resources te verwijderen, met uitzondering van de Operator Nexus-netwerkresources.

az group delete --name myResourceGroup --yes --no-wait

Volgende stappen

U hebt een virtuele Nexus-machine gemaakt. U kunt nu de virtuele machine gebruiken om virtuele netwerkfuncties (VNF's) te hosten.