Quickstart: Ubuntu Virtual Machine (VM) publiceren als Virtual Network Function (VNF)
In deze quickstart wordt beschreven hoe u de az aosm
Azure CLI-extensie gebruikt om een eenvoudige netwerkfunctiedefinitie te maken en te publiceren. Het doel is om de werkstroom van de AOSM-resources (Publisher Azure Operator Service Manager) te demonstreren. De basisconcepten die hier worden gepresenteerd, zijn bedoeld om gebruikers voor te bereiden op het bouwen van interessantere services.
Vereisten
Er is een Azure-account met een actief abonnement vereist. Als u geen Azure-abonnement hebt, volgt u de instructies hier Gratis om een account te maken voordat u begint.
Een bestaande resourcegroep met de rol Inzender of de rol Inzender voor dit abonnement, zodat de AOSM CLI-extensie de resourcegroep kan maken.
Invoerbestand maken
Voer de volgende opdracht uit om het invoerconfiguratiebestand voor de NFD (Network Function Definition) te genereren.
az aosm nfd generate-config --definition-type vnf
Zodra u deze opdracht uitvoert, wordt er een vnf-input.jsonc-bestand gegenereerd.
Notitie
Bewerk het vnf-input.jsonc-bestand en vervang het door de waarden die in het voorbeeld worden weergegeven. Sla het bestand op als input-vnf-nfd.jsonc.
Als u een bestaande resourcegroep gebruikt, wijzigt u het publisher_resource_group_name
veld zodat het overeenkomt.
Hier volgt een voorbeeldbestand 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"
}
}
Variabele | Beschrijving |
---|---|
publisher_name | De naam van de Publisher-resource waarnaar u de definitie wilt publiceren. Gemaakt als deze niet bestaat. |
publisher_resource_group_name | Resourcegroep voor de Publisher-resource. Gemaakt als deze niet bestaat. |
acr_artifact_store_name | Naam van de ACR Artifact Store-resource. Gemaakt als deze niet bestaat. |
location | Azure-locatie die moet worden gebruikt bij het maken van resources. |
nf_name | Naam van NF-definitie. |
version | Versie van de NF-definitie in A.B.C-indeling. |
blob_artifact_store_name | Naam van de opslagaccount Artifact Store-resource. Gemaakt als deze niet bestaat. |
expose_all_parameters | Of u alle NFD-configuratieparameters al dan niet beschikbaar wilt maken voor de ontwerpfunctie. |
arm_template | artifact_name: naam van het artefact. |
file_path: Optioneel. Bestandspad van het artefact dat u wilt uploaden vanaf uw lokale schijf. Verwijderen indien niet vereist. Relatieve paden zijn relatief ten opzichte van het configuratiebestand. In Windows escape elke backslash met een andere backslash. | |
versie: Versie van het artefact. Voor arm-sjablonen moet de indeling A.B.C zijn. | |
Vhd | artifact_name: naam van het artefact. |
file_path: Optioneel. Bestandspad van het artefact dat u wilt uploaden vanaf uw lokale schijf. Verwijderen indien niet vereist. Relatieve paden zijn relatief ten opzichte van het configuratiebestand. In Windows escape elke backslash met een andere backslash. | |
blob_sas_url: Optioneel. SAS-URL van het blob-artefact dat u wilt kopiëren naar uw Artifact Store. Verwijderen indien niet vereist. | |
versie: Versie van het artefact. Versie van het artefact. Voor VHD's moet de indeling A-B-C zijn. | |
"image_disk_size_GB: Optioneel. Hiermee geeft u de grootte van lege gegevensschijven in gigabytes. Deze waarde mag niet groter zijn dan 1023 GB. Verwijderen indien niet vereist. | |
image_hyper_v_generation: Optioneel. Hiermee geeft u het HyperVGenerationType van de virtuele machine die is gemaakt op basis van de installatiekopieën. Geldige waarden zijn V1 en V2. V1 is de standaardinstelling als deze niet is opgegeven. Verwijderen indien niet vereist. | |
image_api_version: Optioneel. De ARM API-versie die wordt gebruikt om de resource Microsoft.Compute/images te maken. Verwijderen indien niet vereist. |
Notitie
Wanneer u de optie file_path gebruikt, is het essentieel om een betrouwbare internetverbinding te hebben met voldoende uploadbandbreedte, omdat de VHD-installatiekopieën doorgaans zeer groot zijn.
Belangrijk
Elke variabele die in de vorige tabel wordt beschreven, moet uniek zijn. De naam van de resourcegroep kan bijvoorbeeld niet bestaan en de namen van uitgevers- en artefactopslag moeten uniek zijn in de regio.
De netwerkfunctiedefinitie (NFD) bouwen
Als u de NFD (Network Function Definition) wilt maken, start u het buildproces.
az aosm nfd build --config-file input-vnf-nfd.jsonc --definition-type vnf
Zodra de build is voltooid, bekijkt u de gegenereerde bestanden om meer inzicht te krijgen in de NFD-structuur (Network Function Definition).
Deze bestanden worden gemaakt in een submap met de naam vnf-cli-output:
Map/bestand | Beschrijving |
---|---|
vnf-cli-output/artifactManifest | |
deploy.bicep | Bicep-sjabloon voor het maken van artefactmanifest, met artefacten gevuld vanuit het invoerbestand |
vnf-cli-output/artifacts | |
artifacts.json | Lijst met artefacten (afbeeldingen en ARM-sjablonen) die moeten worden geüpload bij publiceren. Correleert met het artefactmanifest |
vnf-cli-output/base | |
deploy.bicep | Bicep-sjabloon voor het maken van onderliggende AOSM-resources die nodig zijn voor het instellen van een NF (uitgever, acr, nfdg) |
vnf-cli-output/nfDefinition | |
deploy.bicep | Bicep voor het maken van de Network Function Definition Version (NFDV), met informatie over de netwerkfunctietoepassing uit de ARM-sjabloon die is opgegeven in het invoerbestand |
deployParameters.json | Schema voor het definiëren van implementatieparameters die vereist zijn om een netwerkfunctie (NF) te maken op basis van deze NFDV (Network Function Definition Version) |
<arm-template-name>-templateParameters.json | Het bestand bevat de implementatieparameters die aan de NFDV -versie (Network Function Definition Version) zijn toegewezen aan de parameters die vereist zijn voor de ARM-sjabloon voor de virtuele machine (VM). Deze VM ARM-sjabloonparameters zijn afkomstig uit de ARM-sjablonen die zijn opgegeven in het invoerbestand |
vhdParameters.json | Het bestand bevat de implementatieparameters die aan de NFDV (Network Function Definition Version) zijn toegewezen aan de parameters die vereist zijn voor de VHD-installatiekopieën. De VHD-configuratieparameters zijn afkomstig uit de VHD-sectie van het invoerbestand |
vnf-cli-output | |
all_deploy.parameters.json | Superset van alle implementatieparameters van NF, waarbij één bestand wordt geboden om resourcenamen aan te passen. De waarden die door de buildopdracht naar dit bestand worden uitgevoerd, worden opgehaald uit het vnf-input.jsonc-bestand, maar kunnen worden bewerkt in dit bestand voordat u publiceren uitvoert, bijvoorbeeld om naar een andere locatie te publiceren of een andere naam van de uitgever te gebruiken |
index.json | Bestand dat intern wordt gebruikt bij het publiceren van resources. Niet bewerken |
Notitie
Als er fouten zijn gemaakt, is de enige optie om de opdracht opnieuw uit te voeren met de juiste selecties.
De definitie van de netwerkfunctie publiceren en artefacten uploaden
Voer de volgende opdracht uit om de NFD (Network Function Definition) te publiceren en de bijbehorende artefacten te uploaden:
Notitie
Uitgeversnamen moeten uniek zijn binnen een regio. Het is vrij waarschijnlijk dat de 'ubuntu-publisher' die is gedefinieerd in het voorbeeldconfiguratiebestand al bestaat.
Als er een foutbericht wordt weergegeven met de tekst 'Een privé-uitgeverresource met de naam ubuntu-publisher' bestaat al in de opgegeven regio, bewerkt u het publisher_name
veld in het configuratiebestand zodat het uniek is (bijvoorbeeld een willekeurig tekenreeksachtervoegsel toevoegen), voert u de build
opdracht (hierboven) opnieuw uit en voert u deze publish
opdracht opnieuw uit.
Als u verdergaat met het maken van een netwerkserviceontwerp, moet u deze nieuwe pubilsher-naam in de resource_element_templates
matrix gebruiken.
az aosm nfd publish --build-output-folder vnf-cli-output --definition-type vnf
Wanneer de opdracht is voltooid, inspecteert u de resources in uw Publisher-resourcegroep om de gemaakte onderdelen en artefacten te observeren.
Deze resources worden gemaakt:
Resourcenaam | Resourcetype |
---|---|
ubuntu-vm | Definitie van netwerkfunctie. |
1.0.0 | Versie van netwerkfunctiedefinitie. |
ubuntu-publisher | Uitgever. |
ubuntu-vm-acr-manifest-1-0-0 | Manifest van Publisher-artefact. |
ubuntu-vm-sa-manifest-1-0-0 | Manifest van Publisher-artefact. |
ubuntu-acr | Publisher Artifact Store. |
ubuntu-blob-store | Publisher Artifact Store. |