다음을 통해 공유


빠른 시작: Azure Operator Service Manager에서 가상화된 네트워크 기능을 배포하기 위한 필수 조건 완료

Azure Operator Service Manager 사용을 시작하기 전에 필요한 리소스 공급자를 등록하고 서비스와 상호 작용하는 데 필요한 도구를 설치해야 합니다.

필수 조건

  • Azure 구독에서 AOSM 사용으로 설정했습니다.

Azure CLI 다운로드 및 설치

Azure Cloud Shell에서 Bash 환경을 사용할 수 있습니다. 자세한 내용은 Azure Cloud Shell의 Bash에 대한 빠른 시작을 참조하세요.

CLI 참조 명령을 로컬에서 실행하려는 경우 Azure CLI를 설치하는 방법에 따라 Azure CLI를 설치합니다.

컴퓨터가 Windows 또는 macOS에서 실행 중인 경우 Docker 컨테이너에서 Azure CLI를 실행하는 것이 좋습니다. 자세한 내용은 Docker 컨테이너에서 Azure CLI를 실행하는 방법을 참조하세요.

로컬 설치의 경우 az login 명령을 사용하여 Azure CLI에 로그인합니다.

인증 프로세스를 완료하려면 터미널에 표시되는 단계를 수행합니다. 다른 로그인 옵션은 Azure CLI를 사용하여 로그인을 참조하세요.

Azure CLI로 로그인

Azure CLI로 로그인하려면 다음 명령을 실행합니다.

az login

구독 선택

구독 ID를 사용하여 활성 구독을 변경하려면 다음 명령을 실행합니다.

az account set --subscription "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

AOSM(Azure Operator Service Manager) CLI 확장 설치

Azure Operator Service Manager CLI 확장을 설치하려면 다음 명령을 실행합니다.

az extension add --name aosm

az version을 실행하여 설치된 버전 및 종속 라이브러리를 확인합니다. az upgrade 명령을 실행하여 최신 버전으로 업그레이드합니다.

필요한 리소스 공급자 등록

Azure Operator Service Manager를 사용하기 전에 먼저 다음 명령을 실행하여 필요한 리소스 공급자를 등록해야 합니다. 등록 과정은 최대 5분이 걸릴 수 있습니다.

# Register Resource Provider
az provider register --namespace Microsoft.ContainerRegistry
az provider register --namespace Microsoft.ContainerInstance

등록 상태 확인

리소스 공급자의 등록 상태를 확인하려면 다음 명령을 실행할 수 있습니다.

# Query the Resource Provider
az provider show -n Microsoft.ContainerRegistry --query "{RegistrationState: registrationState, ProviderName: namespace}"
az provider show -n Microsoft.ContainerInstance --query "{RegistrationState: registrationState, ProviderName: namespace}"

성공하면 다음 출력이 표시됩니다.

{
  "ProviderName": "Microsoft.ContainerRegistry",
  "RegistrationState": "Registered"
}
{
  "ProviderName": "Microsoft.ContainerInstance",
  "RegistrationState": "Registered"
}

참고 항목

리소스 공급자 등록이 완료되는 데 몇 분 정도 걸릴 수 있습니다. 등록이 성공하면 NFM(네트워크 기능 관리자) 또는 Azure Operator Service Manager 사용을 시작할 수 있습니다.

VNF(가상 네트워크 기능) 요구 사항

Ubuntu 이미지 다운로드 및 추출

Azure Blob 스토리지에 SAS URL을 통해 액세스할 수 있는 Ubuntu 이미지가 이미 있는 경우 이 단계를 생략하여 시간을 절약할 수 있습니다. Ubuntu 이미지는 약 650MB로 크기가 크므로 전송 프로세스에 시간이 걸릴 수 있습니다.

# Download the Ubuntu image
wget https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64-azure.vhd.tar.gz

# Extract the downloaded image
tar -xzvf jammy-server-cloudimg-amd64-azure.vhd.tar.gz

VM(가상 머신) ARM 템플릿

이 빠른 시작에서는 Ubuntu VM(가상 머신)용의 다음 샘플 ARM 템플릿이 사용됩니다.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.21.1.54444",
      "templateHash": "2626436546580286549"
    }
  },
  "parameters": {
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    },
    "subnetName": {
      "type": "string"
    },
    "ubuntuVmName": {
      "type": "string",
      "defaultValue": "ubuntu-vm"
    },
    "virtualNetworkId": {
      "type": "string"
    },
    "sshPublicKeyAdmin": {
      "type": "string"
    },
    "imageName": {
      "type": "string"
    }
  },
  "variables": {
    "imageResourceGroup": "[resourceGroup().name]",
    "subscriptionId": "[subscription().subscriptionId]",
    "vmSizeSku": "Standard_D2s_v3"
  },
  "resources": [
    {
      "type": "Microsoft.Network/networkInterfaces",
      "apiVersion": "2021-05-01",
      "name": "[format('{0}_nic', parameters('ubuntuVmName'))]",
      "location": "[parameters('location')]",
      "properties": {
        "ipConfigurations": [
          {
            "name": "ipconfig1",
            "properties": {
              "subnet": {
                "id": "[format('{0}/subnets/{1}', parameters('virtualNetworkId'), parameters('subnetName'))]"
              },
              "primary": true,
              "privateIPAddressVersion": "IPv4"
            }
          }
        ]
      }
    },
    {
      "type": "Microsoft.Compute/virtualMachines",
      "apiVersion": "2021-07-01",
      "name": "[parameters('ubuntuVmName')]",
      "location": "[parameters('location')]",
      "properties": {
        "hardwareProfile": {
          "vmSize": "[variables('vmSizeSku')]"
        },
        "storageProfile": {
          "imageReference": {
            "id": "[extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', variables('subscriptionId'), variables('imageResourceGroup')), 'Microsoft.Compute/images', parameters('imageName'))]"
          },
          "osDisk": {
            "osType": "Linux",
            "name": "[format('{0}_disk', parameters('ubuntuVmName'))]",
            "createOption": "FromImage",
            "caching": "ReadWrite",
            "writeAcceleratorEnabled": false,
            "managedDisk": "[json('{\"storageAccountType\": \"Premium_LRS\"}')]",
            "deleteOption": "Delete",
            "diskSizeGB": 30
          }
        },
        "osProfile": {
          "computerName": "[parameters('ubuntuVmName')]",
          "adminUsername": "azureuser",
          "linuxConfiguration": {
            "disablePasswordAuthentication": true,
            "ssh": {
              "publicKeys": [
                {
                  "path": "/home/azureuser/.ssh/authorized_keys",
                  "keyData": "[parameters('sshPublicKeyAdmin')]"
                }
              ]
            },
            "provisionVMAgent": true,
            "patchSettings": {
              "patchMode": "ImageDefault",
              "assessmentMode": "ImageDefault"
            }
          },
          "secrets": [],
          "allowExtensionOperations": true
        },
        "networkProfile": {
          "networkInterfaces": [
            {
              "id": "[resourceId('Microsoft.Network/networkInterfaces', format('{0}_nic', parameters('ubuntuVmName')))]"
            }
          ]
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.Network/networkInterfaces', format('{0}_nic', parameters('ubuntuVmName')))]"
      ]
    }
  ]
}

위의 json 파일을 로컬 컴퓨터에 ubuntu-template.json으로 저장합니다.

다음 단계