クイックスタート: Ubuntu 仮想マシン (VM) を仮想ネットワーク機能 (VNF) として公開する

このクイック スタートでは、az aosm Azure CLI 拡張機能を使用して、基本的なネットワーク機能定義を作成して公開する方法について説明します。 その目的は、Publisher Azure Operator Service Manager (AOSM) リソースのワークフローを示すことです。 ここで説明する基本的な概念は、ユーザーがより優れたサービスを構築するための準備を目的としています。

前提条件

入力ファイルを作成する

次のコマンドを実行して、ネットワーク機能定義 (NFD) の入力構成ファイルを生成します。

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

このコマンドを実行すると、vnf-input.jsonc ファイルが生成されます。

Note

vnf-input.jsonc ファイルを編集し、サンプルに示されている値に置き換えます。 input-vnf-nfd.json としてファイルを保存します。

既存のリソース グループを使用している場合は、それに合わせて 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: 省略可能。 空のデータ ディスクのサイズをギガバイト単位で指定します。 この値は 1023 GB 以下にする必要があります。 不要な場合は削除してください。
image_hyper_v_generation: 省略可能。 イメージから作成された VirtualMachine の HyperVGenerationType を指定します。 有効な値は V1 と V2 です。 V1 は、指定されていない場合の既定値です。 不要な場合は削除してください。
image_api_version: 省略可能。 Microsoft.Compute/images リソースの作成に使用される ARM API バージョン。 不要な場合は削除してください。

Note

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 NF を起動するために必要な基になる AOSM リソースを作成するための Bicep テンプレート (パブリッシャー、acr、nfdg)
vnf-cli-output/nfDefinition
deploy.bicep 入力ファイルで提供される ARM テンプレートのネットワーク機能アプリケーション情報を使用して、ネットワーク機能定義バージョン (NFDV) を作成する Bicep
deployParameters.json このネットワーク機能定義バージョン (NFDV) からネットワーク機能 (NF) を作成するために必要なデプロイ パラメーターを定義するスキーマ。
<arm-template-name>-templateParameters.json 仮想マシン (VM) ARM テンプレートに必要なパラメーターにマップされたネットワーク機能定義バージョン (NFDV) に指定されたデプロイ パラメーターが含まれるファイル。 これらの VM ARM テンプレート パラメーターは、入力ファイルで提供される ARM テンプレートから取得されます
vhdParameters.json VHD イメージに必要なパラメーターにマップされたネットワーク機能定義バージョン (NFDV) に指定されたデプロイ パラメーターが含まれるファイル。 VHD 構成パラメーターは、入力ファイルの VHD セクションから取得されます
vnf-cli-output
all_deploy.parameters.json すべての NF のデプロイ パラメーターのスーパーセット。リソース名をカスタマイズするための 1 つのファイルを提供します。 ビルド コマンドによってこのファイルに出力される値は vnf-input.jsonc ファイルから取得されますが、発行を実行する前にこのファイルで編集できます (たとえば、別の場所に発行する場合や別のパブリッシャー名を使用する場合など)
index.json リソースのパブリッシュ時に内部的に使用されるファイル。 編集できません

Note

エラーが発生した場合、修正する唯一のオプションは、適切な選択でコマンドを再実行することです。

ネットワーク機能定義を公開して成果物をアップロードする

ネットワーク機能定義 (NFD) を公開して関連する成果物をアップロードするには、次のコマンドを実行します。

Note

発行元名は、リージョン内で一意である必要があります。 構成ファイルの例の中で定義した 'ubuntu-publisher' が、既に存在している可能性は非常に高いです。

"'ubuntu-publisher' という名前のプライベート発行元リソースは既にこの指定されたリージョンに存在します" というエラーが発生した場合は、構成ファイル内の publisher_name フィールドを一意になるように編集し (たとえば、ランダムな文字列サフィックスを追加する)、build コマンド (上記) を再実行してから、この publish コマンドを再実行します。

ネットワーク サービス設計の作成に進む場合は、resource_element_templates 配列内でこの新しい発行元名を使用する必要があります。

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

コマンドが完了したら、Publisher リソース グループ内のリソースを調べて、作成されたコンポーネントと成果物を確認します。

これらのリソースが作成されます。

リソース名 リソースの種類
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 発行元成果物ストア。

次のステップ