你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:将 Ubuntu 虚拟机 (VM) 发布为虚拟化网络功能 (VNF)

本快速入门介绍了如何使用 az aosm Azure CLI 扩展创建和发布基本网络功能定义。 其目的是演示发布服务器 Azure 运营商 Service Manager (AOSM) 资源的工作流。 此处介绍的基本概念旨在帮助用户构建更令人兴奋的服务。

先决条件

创建输入文件

执行以下命令,以生成网络功能定义 (NFD) 的输入配置文件。

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

执行此命令后,将会生成 vnf-input.jsonc 文件。

注意

编辑 vnf-input.jsonc 文件,将其替换为示例中显示的值。 将文件另存为“input-vnf-nfd.jsonc”

如果使用现有资源组,请更改 publisher_resource_group_name 字段以匹配它。

下面是一个示例 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"
  }
}
变量 说明
publisher_name 要将定义发布到的发布服务器资源的名称。 如果不存在,则创建一个。
publisher_resource_group_name 发布服务器资源的资源组。 如果不存在,则创建一个。
acr_artifact_store_name ACR 项目存储资源的名称。 如果不存在,则创建一个。
location 创建资源时要使用的 Azure 位置。
nf_name NF 定义的名称。
version A.B.C 格式的 NF 定义版本。
blob_artifact_store_name 存储帐户项目存储资源的名称。 如果不存在,则创建一个。
expose_all_parameters 是否将所有 NFD 配置参数设为可供设计器使用。
arm_template artifact_name:项目的名称。
file_path:可选。 要从本地磁盘上传的项目的文件路径。 如果不需要,请删除。 相对路径是相对于配置文件的。 在 Windows 上,请另外使用一个反斜杠来转义所有反斜杠。
version:项目的版本。 对于 ARM 模板,版本必须采用 A.B.C 格式。
vhd artifact_name:项目的名称。
file_path:可选。 要从本地磁盘上传的项目的文件路径。 如果不需要,请删除。 相对路径是相对于配置文件的。 在 Windows 上,请另外使用一个反斜杠来转义所有反斜杠。
blob_sas_url:可选。 要复制到项目存储的 Blob 项目的 SAS URL。 如果不需要,请删除。
version:项目的版本。 项目的版本。 对于 VHD,版本必须采用 A-B-C 格式。
“image_disk_size_GB:可选。 指定空数据磁盘的大小(以 GB 为单位)。 此值不能大于 1023 GB。 如果不需要,请删除。
image_hyper_v_generation:可选。 指定根据映像创建的虚拟机的 HyperVGenerationType。 有效值为 V1 和 V2。 如果未指定,则 V1 为默认值。 如果不需要,请删除。
image_api_version:可选。 用于创建 Microsoft.Compute/images 资源的 ARM API 版本。 如果不需要,请删除。

注意

使用 file_path 选项时,必须具有具有上传带宽足够的可靠 Internet 连接,因为 VHD 映像通常非常大。

重要

上表中所述的每个变量都必须是唯一的。 例如,资源组名称不能已经存在,发布服务器和项目存储名称在区域中必须是唯一的。

构建网络功能定义 (NFD)

若要构造网络功能定义 (NFD),请启动构建过程。

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

构建完成后,检查生成的文件,以便更好地了解网络功能定义 (NFD) 的结构。

这些文件是在名为 vnf-cli-output 的子目录中创建的

目录/文件 说明
vnf-cli-output/artifactManifest
deploy.bicep 用于创建项目清单的 Bicep 模板,其中包含从输入文件填充的项目
vnf-cli-output/artifacts
artifacts.json 要在发布时上传的项目(图像和 ARM 模板)列表。 与项目清单相关联
vnf-cli-output/base
deploy.bicep 用于创建启动 NF 所需的基础 AOSM 资源的 Bicep 模板(发布者、acr、nfdg)
vnf-cli-output/nfDefinition
deploy.bicep 用于创建网络函数定义版本 (NFDV) 的 Bicep,其中包含输入文件提供的 ARM 模板中的网络函数应用程序信息
deployParameters.json 定义根据此网络函数定义版本 (NFDV) 创建网络函数 (NF) 所需的部署参数的架构
<arm-template-name>-templateParameters.json 文件包含提供给网络函数定义版本 (NFDV) 的部署参数,这些参数映射到虚拟机 (VM) ARM 模板所需的参数。 这些 VM ARM 模板参数源自输入文件中提供的 ARM 模板
vhdParameters.json 文件包含提供给网络函数定义版本 (NFDV) 的部署参数,这些参数映射到 VHD 图像所需的参数。 VHD 配置参数源自输入文件的 VHD 部分
vnf-cli-output
all_deploy.parameters.json 所有 NF 部署参数的超集,可提供一个文件来自定义资源名称。 生成命令输出到此文件的值取自 vnf-input.jsonc 文件,但在运行发布(例如发布到其他位置或使用其他发布者名称)之前,可以在此文件中进行编辑
index.json 发布资源时在内部使用的文件。 请勿编辑

注意

如果出错,唯一可选的更正方法是重新运行采用了正确选择的命令。

发布网络功能定义并上传项目

执行以下命令以发布网络功能定义 (NFD) 并上传关联的项目:

注意

发布者名称在区域中必须唯一。 配置文件示例中定义的“ubuntu-publisher”很可能已经存在。

如果出现错误提示“在提供的区域中已经存在名称为“ubuntu-publisher”的专用发布者资源”,请编辑配置文件中的 publisher_name 字段,使其具有唯一性(例如添加一个随机字符串后缀),重新运行 build 命令(如上),然后重新运行此 publish 命令

如果继续创建网络服务设计,则需要在 resource_element_templates 数组中使用这个新的发布者名称。

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

命令完成后,检查发布服务器资源组中的资源,以观察创建的组件和项目。

将创建以下资源:

资源名称 资源类型
Ubuntu VM 网络功能定义。
1.0.0 网络功能定义版本。
ubuntu-publisher Publisher。
ubuntu-vm-acr-manifest-1-0-0 发布服务器项目清单。
ubuntu-vm-sa-manifest-1-0-0 发布服务器项目清单。
ubuntu-acr 发布服务器项目存储。
ubuntu-blob-store 发布服务器项目存储。

后续步骤