你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
快速入门:将 Ubuntu 虚拟机 (VM) 发布为虚拟化网络功能 (VNF)
本快速入门介绍了如何使用 az aosm
Azure CLI 扩展创建和发布基本网络功能定义。 其目的是演示发布服务器 Azure 运营商 Service Manager (AOSM) 资源的工作流。 此处介绍的基本概念旨在帮助用户构建更令人兴奋的服务。
先决条件
需要一个具有活动订阅的 Azure 帐户。 如果你没有 Azure 订阅,请按照此处的说明免费开始创建帐户,然后再开始。
一个你已拥有参与者角色的现有资源组,或者对此订阅拥有参与者角色,以便 AOSM CLI 扩展能够创建资源组。
创建输入文件
执行以下命令,以生成网络功能定义 (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 | 发布服务器项目存储。 |