Freigeben über


Schnellstart: Veröffentlichen von Ubuntu-VMs als virtualisierte Netzwerkfunktion (Virtual Network Function, VNF)

In diesem Schnellstart wird beschrieben, wie Sie die Azure CLI-Erweiterung az aosm verwenden, um eine einfache Netzwerkfunktionsdefinition zu erstellen und zu veröffentlichen. Der Zweck ist es, den Workflow der AOSM-Ressourcen (Azure Operator Service Manager) des Herausgebers zu veranschaulichen. Die hier vorgestellten grundlegenden Konzepte sollen die Benutzer*innen auf die Erstellung spannenderer Dienste vorbereiten.

Voraussetzungen

Erstellen einer Eingabedatei

Führen Sie den folgenden Befehl aus, um die Eingabekonfigurationsdatei für die Netzwerkfunktionsdefinition (Network Function Definition, NFD) zu generieren.

az aosm nfd generate-config --definition-type vnf

Nachdem Sie diesen Befehl ausgeführt haben, wird eine Datei „vnf-input.jsonc“ generiert.

Hinweis

Bearbeiten Sie die Datei „vnf-input.jsonc“, und ersetzen Sie darin die im Beispiel gezeigten Werte. Speichern Sie die Datei als input-vnf-nfd.jsonc.

Wenn Sie eine vorhandene Ressourcengruppe verwenden, ändern Sie das Feld publisher_resource_group_name entsprechend.

Hier ist eine Beispieldatei für „input-vnf-nfd.jsonc“:

{
  // Azure location to use when creating resources e.g uksouth
  "location": "uksouth",
  // Name of the Publisher resource you want your definition published to.
  // Will be created if it does not exist.
  "publisher_name": "ubuntu-publisher",
  // Resource group for the Publisher resource.
  // Will be created if it does not exist
  "publisher_resource_group_name": "ubuntu-publisher-rg",
  // Name of the ACR Artifact Store resource.
  // Will be created if it does not exist.
  "acr_artifact_store_name": "ubuntu-acr",
  // Name of the network function.
  "nf_name": "ubuntu-vm",
  // Version of the network function definition in 1.1.1 format (three integers separated by dots).
  "version": "1.0.0",
  // If set to true, all NFD configuration parameters are made available to the designer, including optional parameters and those with defaults.
  // If not set or set to false, only required parameters without defaults will be exposed.
  "expose_all_parameters": false,
  // Optional. Name of the storage account Artifact Store resource.
  // Will be created if it does not exist (with a default name if none is supplied).
  "blob_artifact_store_name": "ubuntu-blob-store",
  // ARM template configuration. The ARM templates given here would deploy a VM if run. They will be used to generate the VNF.
  "arm_templates": [
    {
      // Name of the artifact. Used as internal reference only.
      "artifact_name": "ubuntu-template",
      // Version of the artifact in 1.1.1 format (three integers separated by dots).
      "version": "1.0.0",
      // File path (absolute or relative to this configuration file) of the artifact you wish to upload from your local disk.
      // Use Linux slash (/) file separator even if running on Windows.
      "file_path": "ubuntu-template.json"
    }
  ],
  // VHD image configuration.
  "vhd": {
    // Optional. Name of the artifact. Name will be generated if not supplied.
    "artifact_name": "",
    // Version of the artifact in A-B-C format. Note the '-' (dash) not '.' (dot).
    "version": "1-0-0",
    // Supply either file_path or blob_sas_url, not both.
    // File path (absolute or relative to this configuration file) of the artifact you wish to upload from your local disk.
    // Leave as empty string if not required. Use Linux slash (/) file separator even if running on Windows.
    "file_path": "livecd.ubuntu-cpc.azure.vhd",
    // Optional. Specifies the size of empty data disks in gigabytes.
    // This value cannot be larger than 1023 GB. Delete if not required.
    "image_disk_size_GB": "30",
    // Optional. Specifies the HyperVGenerationType of the VirtualMachine created from the image.
    // Valid values are V1 and V2. V1 is the default if not specified. Delete if not required.
    "image_hyper_v_generation": "V1",
    // Optional. The ARM API version used to create the Microsoft.Compute/images resource.
    // Delete if not required.
    "image_api_version": "2023-03-01"
  }
}
Variable Beschreibung
publisher_name Name der Herausgeberressource, unter der Ihre Definition veröffentlicht werden soll. Wird erstellt, falls noch nicht vorhanden.
publisher_resource_group_name Ressourcengruppe für die Herausgeberressource. Wird erstellt, falls noch nicht vorhanden.
acr_artifact_store_name Name der ACR-Artefaktspeicherressource. Wird erstellt, falls noch nicht vorhanden.
location Azure-Standort für das Erstellen von Ressourcen.
nf_name Name der NF-Definition.
Version Version der NF-Definition im Format A.B.C.
blob_artifact_store_name Name der Artefaktspeicherressource des Speicherkontos. Wird erstellt, falls noch nicht vorhanden.
expose_all_parameters Gibt an, ob alle NFD-Konfigurationsparameter dem Designer zur Verfügung gestellt werden sollen.
arm_template artifact_name: Name des Artefakts.
file_path: Optional. Dateipfad des Artefakts, das Sie von Ihrem lokalen Datenträger hochladen möchten. Löschen Sie den Wert, falls er nicht erforderlich ist. Relative Pfade sind relativ zur Konfigurationsdatei. Unter Windows müssen umgekehrte Schrägstriche mit einem weiteren umgekehrten Schrägstrich als Escapezeichen versehen werden.
version: Version des Artefakts. Für ARM-Vorlagen muss die Version das Format A.B.C aufweisen.
vhd artifact_name: Name des Artefakts.
file_path: Optional. Dateipfad des Artefakts, das Sie von Ihrem lokalen Datenträger hochladen möchten. Löschen Sie den Wert, falls er nicht erforderlich ist. Relative Pfade sind relativ zur Konfigurationsdatei. Unter Windows müssen umgekehrte Schrägstriche mit einem weiteren umgekehrten Schrägstrich als Escapezeichen versehen werden.
blob_sas_url: Optional. SAS-URL des Blobartefakts, das Sie in den Artefaktspeicher kopieren möchten. Löschen Sie den Wert, falls er nicht erforderlich ist.
version: Version des Artefakts. Die Version des Artefakts. Für VHDs muss die Version das Format A-B-C aufweisen.
image_disk_size_GB: optional. Gibt die Größe leerer Datenträger in Gigabyte an. Dieser Wert darf nicht größer als 1.023 GB sein. Löschen Sie den Wert, falls er nicht erforderlich ist.
image_hyper_v_generation: optional. Gibt den HyperVGenerationType der VirtualMachine an, die aus dem Image erstellt wurde. Gültige Werte sind V1 und V2. V1 ist der Standardwert, wenn keine Angabe erfolgt. Löschen Sie den Wert, falls er nicht erforderlich ist.
image_api_version: optional. Die ARM-API-Version, die zum Erstellen der Ressource „Microsoft.Compute/images“ verwendet wird. Löschen Sie den Wert, falls er nicht erforderlich ist.

Hinweis

Bei Verwendung der file_path-Option ist es wichtig, über eine zuverlässige Internetverbindung mit ausreichender Uploadbandbreite zu verfügen, da die VHD-Images in der Regel sehr groß sind.

Wichtig

Jede in der obigen Tabelle beschriebene Variable muss eindeutig sein. Beispielsweise darf der Ressourcengruppenname nicht bereits vorhanden sein, und die Namen für Herausgeber- und Artefaktspeicher müssen in der Region eindeutig sein.

Erstellen der Netzwerkfunktionsdefinition (Network Function Definition, NFD)

Um die Netzwerkfunktionsdefinition (NFD) zu erstellen, initiieren Sie den Buildprozess.

az aosm nfd build --config-file input-vnf-nfd.jsonc --definition-type vnf

Überprüfen Sie nach Abschluss des Builds die generierten Dateien, um die Struktur der Netzwerkfunktionsdefinition (NFD) besser zu verstehen.

Diese Dateien werden in einem Unterverzeichnis namens vnf-cli-output erstellt:

Verzeichnis/Datei Beschreibung
vnf-cli-output/artifactManifest
deploy.bicep Bicep-Vorlage zum Erstellen des Artefaktmanifests mit Artefakten, die aus der Eingabedatei ausgefüllt werden
vnf-cli-output/artifacts
artifacts.json Liste der Artefakte (Images und ARM-Vorlagen), die beim Veröffentlichen hochgeladen werden sollen. Korreliert mit dem Artefaktmanifest
vnf-cli-output/base
deploy.bicep Bicep-Vorlage zum Erstellen der zugrunde liegenden AOSM-Ressourcen, die zum Aktivieren eines NF (Herausgeber, acr, nfdg) erforderlich sind
vnf-cli-output/nfDefinition
deploy.bicep Bicep-Datei zum Erstellen der NFDV (Network Function Definition Version) mit Informationen zur Netzwerkfunktionsanwendung aus der ARM-Vorlage, die in der Eingabedatei angegeben ist
deployParameters.json Schema, das die Bereitstellungsparameter definiert, die zum Erstellen einer Netzwerkfunktion (NF) aus dieser NFDV (Network Function Definition Version) erforderlich sind
<arm-template-name>-templateParameters.json Datei mit den Bereitstellungsparametern für die NFDV (Network Function Definition Version), die den Parametern zugeordnet und für die ARM-Vorlage der VM erforderlich ist. Diese Parameter für VM-ARM-Vorlagen stammen aus den ARM-Vorlagen, die in der Eingabedatei bereitgestellt werden.
vhdParameters.json Datei mit den Bereitstellungsparametern für die NFDV (Network Function Definition Version), die den Parametern zugeordnet und für das VHD-Image erforderlich ist. Die VHD-Konfigurationsparameter werden aus dem Abschnitt „VHD“ der Eingabedatei abgeleitet.
vnf-cli-output
all_deploy.parameters.json Obermenge aller NF-Bereitstellungsparameter in einer einzelnen Datei zum Anpassen von Ressourcennamen. Die Werte, die vom Buildbefehl in diese Datei ausgegeben werden, stammen aus der Datei „vnf-input.jsonc“, können aber vor dem Ausführen der Veröffentlichung in dieser Datei bearbeitet werden, um z. B. die Veröffentlichung an einem anderen Speicherort durchzuführen oder einen anderen Herausgebernamen zu verwenden.
index.json Intern beim Veröffentlichen von Ressourcen verwendete Datei. Bearbeiten Sie diese Datei nicht.

Hinweis

Bei einem Fehler besteht die einzige Korrekturmöglichkeit darin, den Befehl mit den richtigen Werten erneut auszuführen.

Veröffentlichen der Netzwerkfunktionsdefinition und Hochladen von Artefakten

Führen Sie den folgenden Befehl aus, um die Netzwerkfunktionsdefinition (NFD) zu veröffentlichen und die zugehörigen Artefakte hochzuladen:

Hinweis

Herausgebernamen müssen innerhalb einer Region eindeutig sein. Der in der Beispielkonfigurationsdatei definierte Wert für „ubuntu-publisher“ ist mit hoher Wahrscheinlichkeit bereits vorhanden.

Wenn Sie die Fehlermeldung Eine private Herausgeberressource mit dem Namen "ubuntu-publisher" ist bereits in der bereitgestellten Region vorhanden. erhalten, bearbeiten Sie das Feld publisher_name in der Konfigurationsdatei so, dass es eindeutig ist (fügen Sie beispielsweise ein zufälliges Zeichenfolgensuffix hinzu). Führen Sie anschließend den build-Befehl (oben) und dann diesen publish-Befehl erneut aus.

Wenn Sie im Anschluss einen Netzwerkdienstentwurf erstellen, müssen Sie diesen neuen Herausgebernamen im resource_element_templates-Array verwenden.

az aosm nfd publish --build-output-folder vnf-cli-output --definition-type vnf

Überprüfen Sie nach Abschluss des Befehls die Ressourcen in Ihrer Herausgeberressourcengruppe, um die erstellten Komponenten und Artefakte zu sehen.

Diese Ressourcen werden erstellt:

Ressourcenname Ressourcentyp
ubuntu-vm Netzwerkfunktionsdefinition.
1.0.0 Version der Netzwerkfunktionsdefinition.
ubuntu-publisher Publisher.
ubuntu-vm-acr-manifest-1-0-0 Artefaktmanifest des Herausgebers.
ubuntu-vm-sa-manifest-1-0-0 Artefaktmanifest des Herausgebers.
ubuntu-acr Artefaktspeicher des Herausgebers.
ubuntu-blob-store Artefaktspeicher des Herausgebers.

Nächste Schritte