Partager via


Démarrage rapide : publier une machine virtuelle (VM) Ubuntu en tant que fonction de Réseau virtuel Microsoft Azure (VNF)

Ce démarrage rapide décrit comment utiliser l’extension Azure CLI az aosm pour créer et publier une définition de fonction réseau de base. Son objectif est de démontrer le flux de travail des ressources de l'éditeur Azure Operator Service Manager (AOSM). Les concepts de base présentés ici visent à préparer les utilisateurs à créer des services plus intéressants.

Prérequis

Créer un fichier d'entrée

Exécutez la commande suivante pour générer le fichier de configuration d'entrée pour la définition de fonction réseau (NFD).

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

Une fois que vous avez exécuté cette commande, un fichier vnf-input.jsonc est généré.

Remarque

Modifiez le fichier vnf-input.jsonc en le remplaçant par les valeurs affichées dans l'exemple. Enregistrez le fichier sous input-vnf-nfd.jsonc.

Si vous utilisez un groupe de ressources existant, modifiez le champ publisher_resource_group_name pour qu’il lui corresponde.

Voici un exemple de fichier 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 Description
publisher_name Nom de la ressource Publisher sur laquelle vous souhaitez publier votre définition. Créé s'il n'existe pas.
publisher_resource_group_name Groupe de ressources pour la ressource Publisher. Créé s'il n'existe pas.
acr_artifact_store_name Nom de la ressource ACR Artifact Store. Créé s'il n'existe pas.
location Emplacement Azure à utiliser lors de la création de ressources.
nf_name Nom de la définition NF.
version Version de la définition NF au format A.B.C.
blob_artifact_store_name Nom de la ressource Artifact Store du compte de stockage. Créé s'il n'existe pas.
expose_all_parameters Indique si tous les paramètres de configuration NFD sont disponibles pour le concepteur.
arm_template artefact_name : nom de l’artefact.
file_path: Facultatif. Chemin de fichier de l'artefact que vous souhaitez télécharger depuis votre disque local. Supprimer si cela n’est pas nécessaire. Les chemins relatifs sont relatifs au fichier de configuration. Sous Windows, échappez à toute barre oblique inverse avec une autre barre oblique inverse.
version : Version de l'artefact. Pour les modèles ARM, la version doit être au format A.B.C.
vhd artifact_name : Nom de l'artefact.
file_path: Facultatif. Chemin de fichier de l'artefact que vous souhaitez télécharger depuis votre disque local. Supprimer si cela n’est pas nécessaire. Les chemins relatifs sont relatifs au fichier de configuration. Sous Windows, échappez à toute barre oblique inverse avec une autre barre oblique inverse.
blob_sas_url: Facultatif. URL SAS de l'artefact blob que vous souhaitez copier dans votre magasin d'artefacts. Supprimer si cela n’est pas nécessaire.
version : Version de l'artefact. Version de l'artefact. Pour les VHD, la version doit être au format A-B-C.
"image_disk_size_GB : facultatif. Spécifie la taille des disques de données vides en gigaoctets. Cette valeur ne peut pas être supérieure à 1023 Go. Supprimer si cela n’est pas nécessaire.
image_hyper_v_generation: facultatif. Spécifie l’HyperVGenerationType de VirtualMachine créé à partir de l’image. Les valeurs valides sont V1 et V2. V1 est la valeur par défaut si elle n’est pas spécifiée. Supprimer si cela n’est pas nécessaire.
image_api_version: facultatif. Version de l’API ARM utilisée pour créer la ressource Microsoft.Compute/images. Supprimer si cela n’est pas nécessaire.

Remarque

Lorsque vous utilisez l’option file_path, il est essentiel d’avoir une connexion Internet fiable avec une bande passante de chargement suffisante, car les images VHD sont généralement très volumineuses.

Important

Chaque variable décrite dans le tableau précédent doit être unique. Par exemple, le nom du groupe de ressources ne peut pas déjà exister et les noms de l'éditeur et du magasin d'artefacts doivent être uniques dans la région.

Construire la définition de fonction réseau (NFD)

Pour construire la définition de fonction réseau (NFD), lancez le processus de génération.

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

Une fois la construction terminée, examinez les fichiers générés pour mieux comprendre la structure NFD (Network Function Definition).

Ces fichiers sont créés dans un sous-répertoire appelé vnf-cli-output :

Répertoire / Fichier Description
vnf-cli-output/artifactManifest
deploy.bicep Modèle Bicep pour créer un manifeste d’artefact, avec des artefacts remplis à partir du fichier d’entrée
vnf-cli-output/artifacts
artifacts.json Liste des artefacts (images et modèles ARM) à charger lors de la publication. Met en corrélation le manifeste d’artefact
vnf-cli-output/base
deploy.bicep Modèle Bicep pour créer des ressources AOSM sous-jacentes nécessaires pour lancer un NF (publisher, acr, nfdg)
vnf-cli-output/nfDefinition
deploy.bicep Bicep pour créer la version de définition de fonction réseau (NFDV), avec des informations d’application de fonction réseau à partir du modèle ARM fourni dans le fichier d’entrée
deployParameters.json Schéma définissant les paramètres de déploiement requis pour créer une fonction réseau (NF) à partir de cette version de définition de fonction réseau (NFDV)
<arm-template-name>-templateParameters.json Le fichier contient les paramètres de déploiement fournis à la version de définition de fonction réseau (NFDV) mappée aux paramètres requis pour le modèle ARM de machine virtuelle. Ces paramètres de modèle ARM de machine virtuelle sont générés à partir des modèles ARM fournis dans le fichier d’entrée
vhdParameters.json Le fichier contient les paramètres de déploiement fournis à la version de définition de fonction réseau (NFDV) mappée aux paramètres requis pour l’image VHD. Les paramètres de configuration VHD sont générés à partir de la section VHD du fichier d’entrée
vnf-cli-output
all_deploy.parameters.json Superset de tous les paramètres de déploiement de NF, fournissant un seul fichier pour personnaliser les noms de ressources. Les valeurs sorties vers ce fichier par la commande build sont extraites du fichier vnf-input.jsonc, mais peuvent être modifiées dans ce fichier avant d’exécuter la publication, par exemple pour publier dans un autre emplacement ou utiliser un autre nom d’éditeur
index.json Fichier utilisé en interne lors de la publication de ressources. Ne pas modifier

Remarque

Si des erreurs ont été commises, la seule option à corriger est de réexécuter la commande avec les sélections appropriées.

Publier la définition de la fonction réseau et télécharger les artefacts

Exécutez la commande suivante pour publier la définition de fonction réseau (NFD) et charger les artefacts associés :

Remarque

Les noms d’éditeur doivent être uniques dans une région. Il est très probable que l’« ubuntu-publisher » défini dans l’exemple de fichier de configuration existe déjà.

Si vous obtenez une erreur indiquant « Une ressource d’éditeur privé portant le nom « ubuntu-publisher » existe déjà dans la région fournie », modifiez le champ publisher_name dans le fichier de configuration afin qu’il soit unique (par exemple, ajouter un suffixe de chaîne aléatoire), réexécutez la commande build (ci-dessus), puis réexécutez cette commande publish.

Si vous créez ensuite une conception de service réseau, vous devez utiliser ce nouveau nom d’éditeur dans le tableau resource_element_templates.

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

Une fois la commande terminée, inspectez les ressources de votre groupe de ressources Publisher pour observer les composants et artefacts créés.

Ces ressources sont créées :

Nom de la ressource Type de ressource
ubuntu-vm Définition de la fonction réseau.
1.0.0 Version de définition de fonction réseau.
ubuntu-publisher Publisher.
ubuntu-vm-acr-manifest-1-0-0 Manifeste d’artefact de l’éditeur.
ubuntu-vm-sa-manifest-1-0-0 Manifeste d’artefact de l’éditeur.
ubuntu-acr Magasin d'artefacts de l'éditeur.
ubuntu-blob-store Magasin d'artefacts de l'éditeur.

Étapes suivantes