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
Un compte Azure avec un abonnement actif est requis. Si vous n'avez pas d'abonnement Azure, suivez les instructions de Commencez gratuitement pour créer un compte avant de commencer.
Un groupe de ressources existant dans lequel vous avez le rôle Contributeur ou le rôle Contributeur sur cet abonnement afin que l’extension AOSM CLI puisse créer le groupe de ressources.
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. |