Compartir a través de


Inicio rápido: Publicar una máquina virtual (VM) ubuntu como función de red virtual (VNF)

En este inicio rápido se describe cómo usar la extensión de la CLI de Azure az aosm para crear y publicar una definición básica de función de red. Su propósito es demostrar el flujo de trabajo de los recursos de Publisher Azure Operator Service Manager (AOSM). Los conceptos básicos que se presentan aquí están diseñados para preparar a los usuarios para crear servicios más emocionantes.

Requisitos previos

Crear un archivo de entrada

Ejecute el comando siguiente para generar el archivo de configuración de entrada para la definición de función de red (NFD).

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

Una vez ejecutado este comando, se genera un archivo vnf-input.jsonc.

Nota:

Edite el archivo vnf-input.jsonc y remplítelo por los valores que se muestran en el ejemplo. Guarde el archivo como input-vnf-nfd.jsonc.

Si usa un grupo de recursos existente, cambie el campo publisher_resource_group_name para que coincida con él.

Este es un archivo input-vnf-nfd.jsonc de muestra:

{
  // 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 Descripción
publisher_name Nombre del recurso del publicador en el que desea publicar la definición. Se crea si no existe.
publisher_resource_group_name Grupo de recursos para el recurso del publicador. Se crea si no existe.
acr_artifact_store_name Nombre del recurso del almacén de artefactos de ACR. Se crea si no existe.
ubicación Ubicación de Azure que se usará al crear recursos.
nf_name Nombre de la definición de NF.
version Versión de la definición NF en formato A.B.C.
blob_artifact_store_name Nombre del recurso del almacén de artefactos de la cuenta de almacenamiento. Se crea si no existe.
expose_all_parameters Indica si se deben hacer que todos los parámetros de configuración NFD estén disponibles para el diseñador.
arm_template artifact_name: nombre del artefacto.
file_path: opcional. Ruta de acceso del archivo del artefacto que desea cargar desde el disco local. Eliminar si no es necesario. Las rutas de acceso relativas son relativas al archivo de configuración. En Windows, escape cualquier barra diagonal inversa con otra barra diagonal inversa.
version: versión del artefacto. Para la versión de las plantillas de ARM debe tener el formato A.B.C.
vhd artifact_name: nombre del artefacto.
file_path: opcional. Ruta de acceso del archivo del artefacto que desea cargar desde el disco local. Eliminar si no es necesario. Las rutas de acceso relativas son relativas al archivo de configuración. En Windows, escape cualquier barra diagonal inversa con otra barra diagonal inversa.
blob_sas_url: opcional. Dirección URL de SAS del artefacto de blob que desea copiar en el almacén de artefactos. Eliminar si no es necesario.
version: versión del artefacto. Versión del artefacto. Para la versión de VHD debe tener el formato A-B-C.
"image_disk_size_GB: Opcional. Especifica el tamaño de los discos de datos vacíos en gigabytes. Este valor no puede ser mayor que 1023 GB. Eliminar si no es necesario.
image_hyper_v_generation: Opcional. Especifica el HyperVGenerationType de la VirtualMachine creada a partir de la imagen. Los valores válidos son V1 y V2. V1 es el valor predeterminado si no se especifica. Eliminar si no es necesario.
image_api_version: opcional. Versión de la API de ARM que se usa para crear el recurso Microsoft.Compute/images. Eliminar si no es necesario.

Nota:

Al utilizar la opción file_path, es esencial disponer de una conexión a Internet confiable con suficiente ancho de banda de carga, ya que las imágenes VHD suelen ser muy grandes.

Importante

Cada variable descrita en la tabla anterior debe ser única. Por ejemplo, el nombre del grupo de recursos no puede existir, y los nombres del almacén de artefactos y del publicador deben ser únicos en la región.

Compilar la definición de función de red (NFD)

Para construir la definición de función de red (NFD), inicie el proceso de compilación.

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

Una vez completada la compilación, examine los archivos generados para comprender mejor la estructura de definición de función de red (NFD).

Estos archivos se crean en un subdirectorio denominado vnf-cli-output:

Directorio / Archivo Descripción
vnf-cli-output/artifactManifest
deploy.bicep Plantilla de Bicep para crear un manifiesto de artefacto, con artefactos rellenados desde el archivo de entrada
vnf-cli-output/artifacts
artifacts.json Lista de artefactos (imágenes y plantillas de ARM) que se van a cargar en la publicación. Se correlaciona con el manifiesto del artefacto
vnf-cli-output/base
deploy.bicep Plantilla de bicep para crear recursos de AOSM subyacentes necesarios para poner en marcha un NF (publicador, acr, nfdg)
vnf-cli-output/nfDefinition
deploy.bicep Bicep para crear la versión de definición de la función de red (NFDV), con la información de aplicación de la función de red de la plantilla de ARM proporcionada en el archivo de entrada
deployParameters.json Esquema que define los parámetros de implementación necesarios para crear una función de red (NF) a partir de esta versión de definición de función de red (NFDV)
<arm-template-name>-templateParameters.json El archivo contiene los parámetros de implementación proporcionados a la versión de definición de función de red (NFDV) asignada a los parámetros necesarios para la plantilla de ARM de máquina virtual (VM). Estos parámetros de plantilla de ARM de máquina virtual se obtienen de las plantillas de ARM proporcionadas en el archivo de entrada
vhdParameters.json El archivo contiene los parámetros de implementación proporcionados a la versión de definición de función de red (NFDV) asignada a los parámetros necesarios para la imagen de VHD. Los parámetros de configuración de VHD se obtienen de la sección VHD del archivo de entrada
vnf-cli-output
all_deploy.parameters.json Superconjunto de todos los parámetros de implementación de NF, lo que proporciona un único archivo para personalizar los nombres de recursos. Los valores enviados a este archivo por el comando de compilación se toman del archivo vnf-input.jsonc, pero pueden editarse en este archivo antes de ejecutar la publicación, por ejemplo, para publicar en una ubicación diferente o utilizar un nombre de publicador diferente.
index.json Archivo usado internamente al publicar recursos. No editar

Nota:

Si se realizaron errores, la única opción para corregir es volver a ejecutar el comando con las selecciones adecuadas.

Publicar la definición de función de red y cargar artefactos

Ejecute el siguiente comando para publicar la definición de función de red (NFD) y cargar los artefactos asociados:

Nota:

Los nombres del publicador deben ser únicos dentro de una región. Es muy probable que el "ubuntu-publisher" definido en el archivo de configuración de ejemplo ya exista.

Si recibe un error que indica "Un recurso de publicador privado con el nombre "ubuntu-publisher" ya existe en la región proporcionada", edite el campo publisher_name en el archivo de configuración para que sea único (por ejemplo, agregue un sufijo de cadena aleatorio), vuelva a ejecutar el comando build (anterior) y vuelva a ejecutar este comando publish.

Si va a crear un diseño de servicio de red, deberá usar este nuevo nombre de publicador en la matriz resource_element_templates.

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

Cuando se complete el comando, inspeccione los recursos del grupo de recursos del publicador para observar los componentes y artefactos creados.

Se crean estos recursos:

Nombre de recurso Tipo de recurso
ubuntu-vm Definición de función de red.
1.0.0 Versión de definición de función de red.
ubuntu-publisher Publisher.
ubuntu-vm-acr-manifest-1-0-0 Manifiesto de artefacto del publicador.
ubuntu-vm-sa-manifest-1-0-0 Manifiesto de artefacto del publicador.
ubuntu-acr Almacén de artefactos del publicador.
ubuntu-blob-store Almacén de artefactos del publicador.

Pasos siguientes