다음을 통해 공유


빠른 시작: Ubuntu VM(가상 머신)을 VNF(Virtual Network 기능)로 게시

이 빠른 시작에서는 az aosm Azure CLI 확장을 사용하여 기본 네트워크 기능 정의를 만들고 게시하는 방법을 설명합니다. 그 목적은 게시자 AOSM(Azure Operator Service Manager) 리소스의 워크플로를 보여 주는 것입니다. 여기에 제시된 기본 개념은 사용자가 더욱 흥미로운 서비스를 빌드할 수 있도록 준비하기 위한 것입니다.

필수 조건

입력 파일 만들기

다음 명령을 실행하여 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 스토리지 계정 Artifact Store 리소스의 이름입니다. 존재하지 않는 경우 만들어집니다.
expose_all_parameters 디자이너에서 모든 NFD 구성 매개 변수를 사용할 수 있도록 할지 여부입니다.
arm_template Artifact_name: 아티팩트의 이름입니다.
file_path: 선택 사항. 로컬 디스크에서 업로드하려는 아티팩트의 파일 경로입니다. 필요하지 않으면 삭제합니다. 상대 경로는 구성 파일을 기준으로 합니다. Windows에서는 다른 백슬래시를 사용하여 백슬래시를 이스케이프 처리합니다.
버전: 아티팩트의 버전입니다. ARM 템플릿 버전의 경우 A.B.C 형식이어야 합니다.
vhd artifact_name: 아티팩트의 이름입니다.
file_path: 선택 사항. 로컬 디스크에서 업로드하려는 아티팩트의 파일 경로입니다. 필요하지 않으면 삭제합니다. 상대 경로는 구성 파일을 기준으로 합니다. Windows에서는 다른 백슬래시를 사용하여 백슬래시를 이스케이프 처리합니다.
blob_sas_url: 선택 사항. Artifact Store에 복사하려는 Blob 아티팩트의 SAS URL입니다. 필요하지 않으면 삭제합니다.
버전: 아티팩트의 버전입니다. 아티팩트의 버전입니다. VHD 버전은 A-B-C 형식이어야 합니다.
"image_disk_size_GB: 선택 사항. 빈 데이터 디스크의 크기를 기가바이트 단위로 지정합니다. 이 값은 1023GB보다 클 수 없습니다. 필요하지 않으면 삭제합니다.
image_hyper_v_generation: 선택 사항. 이미지에서 만들어진 가상 머신의 Hyper GenerationType을 지정합니다. 유효한 값은 V1 및 V2입니다. 지정하지 않으면 V1이 기본값입니다. 필요하지 않으면 삭제합니다.
image_api_version: 선택 사항. Microsoft.Compute/images 리소스를 만드는 데 사용되는 ARM API 버전입니다. 필요하지 않으면 삭제합니다.

참고 항목

file_path 옵션을 사용하는 경우 VHD 이미지가 일반적으로 매우 크기 때문에 충분한 업로드 대역폭이 충분한 안정적인 인터넷 연결이 필요합니다.

Important

이전 표에 설명된 각 변수는 고유해야 합니다. 예를 들어, 리소스 그룹 이름은 이미 존재할 수 없으며 게시자 및 아티팩트 저장소 이름은 지역에서 고유해야 합니다.

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(게시자, acr, nfdg)를 스핀업하는 데 필요한 기본 AOSM 리소스를 만들기 위한 Bicep 템플릿
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 배포 매개 변수의 상위 집합으로, 리소스 이름을 사용자 지정하기 위한 단일 파일을 제공합니다. 빌드 명령에 의해 이 파일에 출력되는 값은 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 게시자 아티팩트 저장소.

다음 단계