共用方式為


快速入門:發佈 Ubuntu 虛擬機器 (VM) 做為虛擬網路功能 (VNF)

本快速入門描述如何使用 az aosm Azure CLI 延伸模組,來建立和發佈基本網路功能定義。 其用途為示範發行者 Azure 運算子服務管理員 (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 成品存放區資源的名稱。 如果不存在,則會建立。
位置 建立資源時要使用的 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 發行者成品存放區。

下一步