Condividi tramite


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

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.

Passaggi successivi