快速入門:發佈 Ubuntu 虛擬機器 (VM) 做為虛擬網路功能 (VNF)
本快速入門描述如何使用 az aosm
Azure CLI 延伸模組,來建立和發佈基本網路功能定義。 其用途為示範發行者 Azure 運算子服務管理員 (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 成品存放區資源的名稱。 如果不存在,則會建立。 |
位置 | 建立資源時要使用的 Azure 位置。 |
nf_name | NF 定義的名稱。 |
version | NF 定義的版本,格式為 A.B.C。 |
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:選擇性。 指定從映像建立的 VirtualMachine 的 HyperVGenerationType。 有效值為 V1 和 V2。 如果未指定,則 V1 是預設值。 如果不需要,請將其刪除。 | |
image_api_version:選擇性。 用來建立 Microsoft.Compute/images 資源的 ARM API 版本。 如果不需要,請將其刪除。 |
注意
使用 file_path 選項時,必須擁有足夠上傳頻寬的可靠網際網路連線,因為 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 | Bicep 範本,用來建立啟動 NF (發行者、acr、nfdg) 所需的基礎 AOSM 資源 |
vnf-cli-output/nfDefinition | |
deploy.bicep | Bicep 以建立網路功能定義版本 (NFDV),其中包含輸入檔中所提供 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 | 發行者。 |
ubuntu-vm-acr-manifest-1-0-0 | 發行者成品資訊清單。 |
ubuntu-vm-sa-manifest-1-0-0 | 發行者成品資訊清單。 |
ubuntu-acr | 發行者成品存放區。 |
ubuntu-blob-store | 發行者成品存放區。 |