Freigeben über


Schnellstart: Erstellen einer Azure Operator Nexus-VM mit Bicep

  • Bereitstellen eines virtuellen Computers in Azure Nexus mithilfe von Bicep

Dieser Schnellstartleitfaden soll Ihnen den Einstieg in die Verwendung virtueller Nexus-Computer zum Hosten virtueller Netzwerkfunktionen (Virtual Network Functions, VNFs) erleichtern. Wenn Sie die in diesem Leitfaden beschriebenen Schritte ausführen, können Sie schnell und einfach einen benutzerdefinierten virtuellen Nexus-Computer erstellen, der Ihre spezifischen Anforderungen erfüllt. Ob Sie Anfänger*in oder Expertin/Experte für Nexus-Netzwerke sind, dieser Leitfaden hilft Ihnen auf alle Fälle. Sie erfahren alles, was Sie wissen müssen, um Nexus-VMs zum Hosten virtueller Netzwerkfunktionen zu erstellen und anzupassen.

Voraussetzungen

Sollten Sie über kein Azure-Abonnement verfügen, können Sie zunächst ein kostenloses Azure-Konto erstellen.

  • Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Schnellstart für Bash in Azure Cloud Shell.

  • Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.

    • Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der Azure CLI.

    • Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.

    • Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.

  • Installieren Sie die aktuelle Version der notwendigen Azure CLI-Erweiterung.

  • Für diesen Artikel ist mindestens Version 2.61.0 der Azure CLI erforderlich. Bei Verwendung von Azure Cloud Shell ist die aktuelle Version bereits installiert.

  • Wenn Sie über mehrere Azure-Abonnements verfügen, wählen Sie mithilfe des Befehls az account die ID des Abonnements aus, in dem die Ressourcen fakturiert werden sollen.

  • Bevor Sie mit der Erstellung des virtuellen Computers fortfahren, stellen Sie sicher, dass das zu verwendende Containerimage den Anweisungen gemäß erstellt wird.

  • Erstellen Sie mit dem Befehl az group create eine Ressourcengruppe. Eine Azure-Ressourcengruppe ist eine logische Gruppe, in der Azure-Ressourcen bereitgestellt und verwaltet werden. Wenn Sie eine Ressourcengruppe erstellen, werden Sie zur Angabe eines Speicherorts aufgefordert. An diesem Speicherort werden die Metadaten Ihrer Ressourcengruppe gespeichert. Darüber hinaus werden dort die Ressourcen in Azure ausgeführt, wenn Sie während der Ressourcenerstellung keine andere Region angeben. Das folgende Beispiel erstellt eine Ressourcengruppe mit dem Namen myResourceGroup am Standort eastus.

    az group create --name myResourceGroup --location eastus
    

    Das folgende Ausgabebeispiel ähnelt der erfolgreichen Erstellung der Ressourcengruppe:

    {
      "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
      "location": "eastus",
      "managedBy": null,
      "name": "myResourceGroup",
      "properties": {
        "provisioningState": "Succeeded"
      },
      "tags": null
    }
    
  • Zum Bereitstellen einer Bicep-Datei oder ARM-Vorlage benötigen Sie Schreibzugriff auf die Ressourcen, die Sie bereitstellen, und Zugriff auf alle Vorgänge für den Ressourcentyp Microsoft.Resources/deployments. Um beispielsweise einen Cluster bereitzustellen, benötigen Sie die Berechtigungen „Microsoft.NetworkCloud/virtualMachines/write“ und „Microsoft.Resources/deployments/*“. Eine Liste der Rollen und Berechtigungen finden Sie unter Integrierte Azure-Rollen.

  • Sie benötigen die custom location-Ressourcen-ID Ihres Azure Operator Nexus-Clusters.

  • Sie müssen verschiedene Netzwerke gemäß Ihren spezifischen Workloadanforderungen erstellen, und es ist wichtig, dass die entsprechenden IP-Adressen für Ihre Workloads verfügbar sind. Um eine reibungslose Implementierung zu gewährleisten, ist es ratsam, sich für Unterstützung an die entsprechenden Supportteams zu wenden.

  • Erfüllen Sie die Voraussetzungen für die Bereitstellung eines virtuellen Nexus-Computers.

Überprüfen der Vorlage

Bevor Sie die Vorlage für virtuelle Computer bereitstellen, überprüfen wir den Inhalt, um die Struktur zu verstehen.

@description('The name of Nexus virtual machine')
param vmName string

@description('The Azure region where the VM is to be deployed')
param location string = resourceGroup().location

@description('The custom location of the Nexus instance')
param extendedLocation string

@description('The metadata tags to be associated with the cluster resource')
param tags object = {}

@description('The name of the administrator to which the ssh public keys will be added into the authorized keys.')
@minLength(1)
@maxLength(32)
param adminUsername string = 'azureuser'

@description('Selects the boot method for the virtual machine.')
@allowed([
  'UEFI'
  'BIOS'
])
param bootMethod string = 'UEFI'

@description('The Cloud Services Network attachment ARM ID to attach to virtual machine.')
param cloudServicesNetworkId string

@description('Number of CPU cores for the virtual machine. Choose a value between 2 and 46.')
param cpuCores int = 2

@description('The memory size of the virtual machine in GiB (max 224 GiB)')
param memorySizeGB int = 4

@description('The list of network attachments to the virtual machine.')
param networkAttachments array

// {
//   attachedNetworkId: "string"
//   defaultGateway: "True"/"False"
//   ipAllocationMethod: "Dynamic"/"Static","Disabled"
//   ipv4Address: "string"
//   ipv6Address: "string"
//   networkAttachmentName: "string"
// }

@description('The Base64 encoded cloud-init network data.')
param networkData string = ''

@description('The placement hints for the virtual machine.')
param placementHints array = []
// {
//   hintType: "Affinity/AntiAffinity"
//   resourceId: string
//   schedulingExecution: "Hard/Soft"
//   scope: "Rack/Machine"
// }

@description('The list of SSH public keys for the virtual machine.')
param sshPublicKeys array
// {
//   keyData: 'string'
// }

@description('StorageProfile represents information about a disk.')
param storageProfile object = {
  osDisk: {
    createOption: 'Ephemeral'
    deleteOption: 'Delete'
    diskSizeGB: 64
  }
}

@description('The Base64 encoded cloud-init user data.')
param userData string = ''

@description('The type of the device model to use.')
@allowed([
  'T1'
  'T2'
])
param vmDeviceModel string = 'T2'

@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.')
param vmImage string

@description('Credentials used to login to the image repository.')
param vmImageRepositoryCredentials object = {}
// password: "string"
// registryUrl: "string"
// username: "string"

resource vm 'Microsoft.NetworkCloud/virtualMachines@2024-07-01' = {
  name: vmName
  location: location
  extendedLocation: {
    type: 'CustomLocation'
    name: extendedLocation
  }
  tags: tags
  properties: {
    adminUsername: (empty(adminUsername) ? null : adminUsername)
    bootMethod: (empty(bootMethod) ? null : bootMethod)
    cloudServicesNetworkAttachment: {
      attachedNetworkId: cloudServicesNetworkId
      ipAllocationMethod: 'Dynamic'
    }
    cpuCores: cpuCores
    memorySizeGB: memorySizeGB
    networkData: (empty(networkData) ? null : networkData)
    networkAttachments: (empty(networkAttachments) ? null : networkAttachments)
    placementHints: (empty(placementHints) ? null : placementHints)
    sshPublicKeys: (empty(sshPublicKeys) ? null : sshPublicKeys)
    storageProfile: (empty(storageProfile) ? null : storageProfile)
    userData: (empty(userData) ? null : userData)
    vmDeviceModel: (empty(vmDeviceModel) ? null : vmDeviceModel)
    vmImage: (empty(vmImage) ? null : vmImage)
    vmImageRepositoryCredentials: (empty(vmImageRepositoryCredentials) ? null : vmImageRepositoryCredentials)
  }
}

Warnung

Benutzerdaten werden nicht verschlüsselt, und jeder Prozess auf der VM kann diese Daten abfragen. Sie sollten keine vertraulichen Informationen in Benutzerdaten speichern. Weitere Informationen finden Sie unter Bewährte Methoden für die Datensicherheit und Verschlüsselung in Azure.

Nachdem Sie die Vorlagendatei mit dem Namen virtual-machine-bicep-template.bicep überprüft und gespeichert haben, fahren Sie mit dem nächsten Abschnitt fort, um die Vorlage bereitzustellen.

Bereitstellen der Vorlage

  1. Erstellen Sie eine Datei mit dem Namen virtual-machine-parameters.json, und fügen Sie die erforderlichen Parameter im JSON-Format hinzu. Sie können das folgende Beispiel als Ausgangspunkt verwenden. Ersetzen Sie die Werte dabei durch Ihre eigenen Werte.
{
    "$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. Stellen Sie die Vorlage bereit.
    az deployment group create --resource-group myResourceGroup --template-file virtual-machine-bicep-template.bicep --parameters @virtual-machine-parameters.json

Überprüfen der bereitgestellten Ressourcen

Nach Abschluss der Bereitstellung können Sie die Ressourcen mithilfe der CLI oder des Azure-Portals anzeigen.

Um die Details des myNexusVirtualMachine-Clusters in der Ressourcengruppe „myResourceGroup“ anzuzeigen, führen Sie den folgenden

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

Bereinigen von Ressourcen

Löschen Sie die Ressourcengruppe, wenn Sie sie nicht mehr benötigen. Die Ressourcengruppe und alle Ressourcen in der Ressourcengruppe werden gelöscht.

Verwenden Sie den Befehl az group delete, um die Ressourcengruppe, die VM und alle zugehörigen Ressourcen, außer der Operator Nexus-Netzwerkressource, zu löschen.

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

Nächste Schritte

Sie haben erfolgreich einen virtuellen Nexus-Computer erstellt. Sie können jetzt den virtuellen Computer verwenden, um virtuelle Netzwerkfunktionen (VNFs) zu hosten.