Avvio rapido: Pubblicare una macchina virtuale Ubuntu come funzione di rete virtualizzata
Questa guida introduttiva descrive come usare l'estensione dell'interfaccia della riga di comando di Azure az aosm
per creare e pubblicare la definizione di una funzione di rete di base. Lo scopo è illustrare il flusso di lavoro delle risorse di Azure Operator Service Manager (AOSM) del server di pubblicazione. I concetti di base qui presentati hanno lo scopo di preparare gli utenti nella creazione di servizi più interessanti.
Prerequisiti
È richiesto un account Azure con una sottoscrizione attiva. Se non si dispone di una sottoscrizione di Azure, seguire le istruzioni riportate qui Iniziare gratuitamente per creare un account prima di iniziare.
Gruppo di risorse esistente in cui si ha il ruolo Collaboratore, o ruolo di Collaboratore per questa sottoscrizione in modo che l'estensione dell'interfaccia della riga di comando di AOSM possa creare il gruppo di risorse.
Creare un file di input
Eseguire il comando seguente per generare il file di configurazione di input per la definizione della funzione di rete (NFD).
az aosm nfd generate-config --definition-type vnf
Dopo aver eseguito questo comando, viene generato un file vnf-input.jsonc.
Nota
Modificare il file vnf-input.jsonc, sostituendolo con i valori mostrati nell'esempio. Salvare il file come input-vnf-nfd.jsonc.
Se si usa un gruppo di risorse esistente, modificare il campo publisher_resource_group_name
in modo che vi corrisponda.
Ecco un file input-vnf-nfd.jsonc di esempio:
{
// 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"
}
}
Variabile | Descrizione |
---|---|
publisher_name | Nome della risorsa del server di pubblicazione in cui si vuole pubblicare la definizione. Se non esiste viene creato. |
publisher_resource_group_name | Gruppo di risorse per la risorsa del server di pubblicazione. Se non esiste viene creato. |
acr_artifact_store_name | Nome della risorsa dell'archivio artefatti del Registro Azure Container. Se non esiste viene creato. |
location | Posizione di Azure da usare durante la creazione delle risorse. |
nf_name | Nome della definizione della funzione di rete. |
version | Versione della definizione della funzione di rete in formato A.B.C. |
blob_artifact_store_name | Nome della risorsa dell'archivio artefatti dell'account di archiviazione. Se non esiste viene creato. |
expose_all_parameters | Possibilità di rendere o meno disponibili per la finestra di progettazione tutti i parametri di configurazione della definizione della funzione di rete. |
arm_template | artifact_name: nome dell'artefatto. |
file_path: facoltativo. Percorso file dell'artefatto che si vuole caricare dal disco locale. Eliminare se non necessario. I percorsi relativi riguardano il file di configurazione. In Windows viene eseguito l'escape di ogni barra rovesciata con un'altra barra rovesciata. | |
version: versione dell'artefatto. Per i modelli ARM la versione deve essere in formato A.B.C. | |
vhd | artifact_name: nome dell'artefatto. |
file_path: facoltativo. Percorso file dell'artefatto che si vuole caricare dal disco locale. Eliminare se non necessario. I percorsi relativi riguardano il file di configurazione. In Windows viene eseguito l'escape di ogni barra rovesciata con un'altra barra rovesciata. | |
blob_sas_url: facoltativo. URL firma di accesso condiviso dell'artefatto BLOB che si vuole copiare nell'archivio artefatti. Eliminare se non necessario. | |
version: versione dell'artefatto. Versione dell'artefatto. Per i dischi rigidi virtuali la versione deve essere in formato A-B-C. | |
"image_disk_size_GB: facoltativo. Specifica le dimensioni in gigabyte dei dischi dati vuoti. Questo valore non può essere maggiore di 1023 GB. Eliminare se non necessario. | |
image_hyper_v_generation: facoltativo. Specifica l'HyperVGenerationType della VirtualMachine creata dall'immagine. I valori validi sono V1 e V2. V1 è l'impostazione predefinita, se non specificato. Eliminare se non necessario. | |
image_api_version: facoltativo. Versione dell'API ARM usata per creare la risorsa Microsoft.Compute/images. Eliminare se non necessario. |
Nota
Quando si usa l'opzione file_path, è essenziale avere una connessione Internet affidabile con una sufficiente larghezza di banda di caricamento, poiché le immagini del disco rigido virtuale sono in genere molto grandi.
Importante
Ogni variabile descritta nella tabella precedente deve essere univoca. Ad esempio, il nome del gruppo di risorse non può esistere già e i nomi dell'archivio degli artefatti e del server di pubblicazione devono essere univoci nell'area.
Compilare la definizione di funzione di rete (NFD)
Per costruire la definizione della funzione di rete (NFD), avviare il processo di compilazione.
az aosm nfd build --config-file input-vnf-nfd.jsonc --definition-type vnf
Al termine della compilazione, esaminare i file generati per comprendere meglio la struttura della definizione della funzione di rete.
Questi file vengono creati in una sottodirectory denominata vnf-cli-output:
Directory / File | Descrizione |
---|---|
vnf-cli-output/artifactManifest | |
deploy.bicep | Modello Bicep per creare il manifesto dell'artefatto, con artefatti popolati a partire dal file di input |
vnf-cli-output/artifacts | |
artifacts.json | Elenco di artefatti (immagini e modelli ARM) da caricare durante la pubblicazione. È relazionato al manifesto dell'artefatto |
vnf-cli-output/base | |
deploy.bicep | Modello Bicep per creare risorse AOSM sottostanti, necessarie per lo spin up di una funzione di rete (publisher, acr, nfdg) |
vnf-cli-output/nfDefinition | |
deploy.bicep | Bicep per creare la versione della definizione della funzione di rete, con informazioni sull'applicazione della funzione di rete prese dal modello ARM fornito nel file di input |
deployParameters.json | Schema che definisce i parametri di distribuzione necessari per creare una funzione di rete da questa versione della definizione della funzione di rete |
<arm-template-name>-templateParameters.json | Il file contiene i parametri di distribuzione forniti alla versione della definizione della funzione di rete mappata ai parametri necessari per il modello di Resource Manager della macchina virtuale. Questi parametri del modello di Resource Manager della macchina virtuale vengono originati dai modelli di ARM forniti nel file di input |
vhdParameters.json | Il file contiene i parametri di distribuzione forniti alla versione della definizione della funzione di rete mappata ai parametri necessari per l’immagine del disco rigido virtuale. I parametri di configurazione del disco rigido virtuale vengono originati dalla sezione disco rigido virtuale del file di input |
vnf-cli-output | |
all_deploy.parameters.json | Superset di tutti i parametri di distribuzione della funzione di rete, che fornisce un singolo file per personalizzare i nomi delle risorse. I valori restituiti in questo file dal comando di compilazione vengono ricavati dal file vnf-input.jsonc, ma possono essere modificati in questo file prima di eseguire la pubblicazione, ad esempio per pubblicare in un percorso diverso o usare un nome server di pubblicazione diverso |
index.json | File usato internamente durante la pubblicazione delle risorse. Non modificare |
Nota
Se si sono commessi errori, l'unica opzione per correggerli consiste nell'eseguire di nuovo il comando con le selezioni appropriate.
Pubblicare la definizione della funzione di rete e caricare gli artefatti
Eseguire il comando seguente per pubblicare la definizione della funzione di rete e caricare gli artefatti associati:
Nota
I nomi dei server di pubblicazione devono essere univoci all'interno di un'area. Molto probabilmente esiste già il file di configurazione "ubuntu-publisher" definito nel file di configurazione di esempio.
Se viene visualizzato un errore che indica che “Nell’area specificata esiste già una risorsa del server di pubblicazione privato con il nome ‘ubuntu-publisher’", modificare il campo publisher_name
nel file di configurazione in modo che sia univoco (ad esempio, aggiungere un suffisso stringa casuale), eseguire nuovamente il comando build
(sopra) ed eseguire nuovamente questo comando publish
.
Se si procede alla creazione di una progettazione del servizio di rete, sarà necessario usare questo nuovo nome server di pubblicazione nella matrice resource_element_templates
.
az aosm nfd publish --build-output-folder vnf-cli-output --definition-type vnf
Al termine del comando, esaminare le risorse all'interno del gruppo di risorse del server di pubblicazione per osservare i componenti e gli artefatti creati.
Vengono create queste risorse:
Nome della risorsa | Tipo di risorsa |
---|---|
ubuntu-vm | Definizione della funzione di rete. |
1.0.0 | Versione della definizione della funzione di rete. |
ubuntu-publisher | Autore. |
ubuntu-vm-acr-manifest-1-0-0 | Manifesto dell'artefatto del server di pubblicazione. |
ubuntu-vm-sa-manifest-1-0-0 | Manifesto dell'artefatto del server di pubblicazione. |
ubuntu-acr | Archivio artefatti del server di pubblicazione. |
ubuntu-blob-store | Archivio artefatti del server di pubblicazione. |