Azure PowerShell을 통해 Azure Stack Edge 디바이스에 VM 배포

적용 대상:Yes for Pro GPU SKUAzure Stack Edge Pro - GPUYes for Pro 2 SKUAzure Stack Edge Pro 2Yes for Pro R SKUAzure Stack Edge Pro RYes for Mini R SKUAzure Stack Edge Mini R

이 문서에서는 Azure PowerShell을 사용하여 Azure Stack Edge 디바이스에서 VM(가상 머신)을 만들고 관리하는 방법을 설명합니다.

VM 배포 워크플로

VM 배포의 개략적인 배포 워크플로는 다음과 같습니다.

  1. 디바이스의 로컬 Azure Resource Manager에 연결합니다.
  2. 디바이스의 기본 제공 구독 쿼리를 파악합니다.
  3. VM 이미지를 가져옵니다.
  4. 기본 제공 구독에 리소스 그룹을 만듭니다. 리소스 그룹에는 VM 및 모든 관련 리소스가 포함됩니다.
  5. VM 이미지를 만드는 데 사용될 VHD를 저장할 로컬 스토리지 계정을 디바이스에 만듭니다.
  6. Windows/Linux 소스 이미지를 스토리지 계정에 업로드하여 관리 디스크를 만듭니다.
  7. 관리 디스크를 사용하여 VM 이미지를 만듭니다.
  8. 디바이스 포트에서 컴퓨팅을 사용하도록 설정하여 가상 스위치를 만듭니다.
  9. 그러면 컴퓨팅을 사용하도록 설정한 포트에 연결된 가상 스위치를 사용하여 가상 네트워크를 만듭니다.
  10. 이전에 만든 VM 이미지, 가상 네트워크 및 가상 네트워크 인터페이스를 사용하여 VM을 만들어서, 가상 네트워크 내에서 통신하고 VM에 원격으로 액세스하는 공용 IP 주소를 할당합니다. 필요에 따라 VM에 더 많은 저장소를 제공하기 위해 데이터 디스크를 포함합니다.

필수 조건

Azure Stack Edge 디바이스에서 VM을 배포하려면 먼저 Azure PowerShell에 대한 Azure Resource Manager를 통해 디바이스에 연결하도록 클라이언트를 구성해야 합니다. 자세한 지침은 Azure Stack Edge 디바이스에서 Azure Resource Manager에 연결을 참조하세요.

다음 단계를 사용하여 클라이언트에서 디바이스에 액세스할 수 있는지 확인합니다. Azure Resource Manager에 연결할 때 이 구성을 이미 수행했으며, 이제 구성이 성공했는지 확인하는 중입니다.

  1. 다음 명령을 실행하여 Azure Resource Manager 통신이 작동하는지 확인합니다.

    Add-AzEnvironment -Name <Environment Name> -ARMEndpoint "https://management.<appliance name>.<DNSDomain>"
    
  2. 인증할 로컬 디바이스 API를 호출하려면 다음을 입력합니다.

    login-AzAccount -EnvironmentName <Environment Name> -TenantId c0257de7-538f-415c-993a-1b87a031879d
    

    Azure Resource Manager를 통해 연결하려면 사용자 이름 EdgeArmUser와 암호를 제공합니다.

  3. Kubernetes용 컴퓨팅을 구성한 경우 이 단계를 건너뛸 수 있습니다. 그렇지 않으면 다음을 수행하여 컴퓨팅용 네트워크 인터페이스를 사용하도록 설정했는지 확인합니다.

    a. 로컬 사용자 인터페이스에서 컴퓨팅 설정으로 이동합니다.
    b. 가상 스위치를 만드는 데 사용할 네트워크 인터페이스를 선택합니다. 사용자가 만든 VM은 이 포트 및 관련 네트워크에 연결된 가상 스위치에 연결됩니다. VM에 사용할 IP 주소와 일치하는 네트워크를 선택해야 합니다.

    Screenshot of the Compute configuration network settings pane.

    c. 네트워크 인터페이스의 컴퓨팅 사용에서 를 선택합니다. Azure Stack Edge는 해당 네트워크 인터페이스에 해당하는 가상 스위치를 만들고 관리합니다. 지금은 Kubernetes에 대한 특정 IP를 입력하지 마세요. 컴퓨팅을 활성화하는 데 몇 분 정도 걸릴 수 있습니다.

    참고 항목

    GPU VM을 만드는 경우 인터넷에 연결된 네트워크 인터페이스를 선택합니다. 이렇게 하면 디바이스에 GPU 확장을 설치할 수 있습니다.

디바이스의 기본 제공 구독 쿼리

Azure Resource Manager의 경우 사용자에게 표시되는 단일 고정 구독만 지원됩니다. 이 구독은 디바이스별로 고유하며 구독 이름과 구독 ID는 변경할 수 없습니다.

구독에는 VM 생성에 필요한 모든 리소스가 포함됩니다.

Important

구독은 Azure Portal에서 VM을 사용하도록 설정할 때 만들어지며 디바이스에서 로컬로 유지됩니다.

구독은 VM을 배포하는 데 사용됩니다.

  1. 구독을 나열하려면 다음 명령을 실행합니다.

    Get-AzSubscription
    

    다음은 몇 가지 출력 예입니다.

    PS C:\WINDOWS\system32> Get-AzSubscription
    
    Name                          Id                                   TenantId
    ----                          --                                   --------
    Default Provider Subscription ...                                  ...
    
    
    PS C:\WINDOWS\system32>
    
  2. 디바이스에서 실행 중인 등록된 리소스 공급자 목록을 가져옵니다. 이 목록에는 일반적으로 컴퓨팅, 네트워크 및 스토리지가 포함됩니다.

    Get-AzResourceProvider
    

    참고 항목

    리소스 공급자는 사전 등록되어 있으며 수정하거나 변경할 수 없습니다.

    다음은 몇 가지 출력 예입니다.

    PS C:\WINDOWS\system32>  Get-AzResourceProvider
    
    ProviderNamespace : Microsoft.AzureBridge
    RegistrationState : Registered
    ResourceTypes     : {locations, operations, locations/ingestionJobs}
    Locations         : {DBELocal}
    
    ProviderNamespace : Microsoft.Compute
    RegistrationState : Registered
    ResourceTypes     : {virtualMachines, virtualMachines/extensions, locations, operations...}
    Locations         : {DBELocal}
    
    ProviderNamespace : Microsoft.Network
    RegistrationState : Registered
    ResourceTypes     : {operations, locations, locations/operations, locations/usages...}
    Locations         : {DBELocal}
    
    ProviderNamespace : Microsoft.Resources
    RegistrationState : Registered
    ResourceTypes     : {tenants, locations, providers, checkresourcename...}
    Locations         : {DBELocal}
    
    ProviderNamespace : Microsoft.Storage
    RegistrationState : Registered
    ResourceTypes     : {storageaccounts, storageAccounts/blobServices, storageAccounts/tableServices,
                        storageAccounts/queueServices...}
    Locations         : {DBELocal}
    
    PS C:\WINDOWS\system32>
    

리소스 그룹 만들기

먼저 새 Azure 리소스 그룹을 만들고, 스토리지 계정, 디스크, 네트워크 인터페이스 및 관리 디스크와 같은 모든 VM 관련 리소스에 대한 논리적 컨테이너로 사용합니다.

Important

모든 리소스는 디바이스와 동일한 위치에 만들어지며 위치는 DBELocal로 설정됩니다.

  1. 일부 매개 변수를 설정합니다.

    $ResourceGroupName = "<Resource group name>" 
    
  2. VM을 위해 만들 리소스에 대한 리소스 그룹을 만듭니다.

    New-AzResourceGroup -Name $ResourceGroupName -Location DBELocal
    

    다음은 몇 가지 출력 예입니다.

    PS C:\WINDOWS\system32> New-AzResourceGroup -Name myaseazrg -Location DBELocal
    
    ResourceGroupName : myaseazrg
    Location          : dbelocal
    ProvisioningState : Succeeded
    Tags              :
    ResourceId        : /subscriptions/.../resourceGroups/myaseazrg
    
    PS C:\WINDOWS\system32>
    

로컬 스토리지 계정 만들기

기존 리소스 그룹을 사용하여 새 로컬 스토리지 계정을 만듭니다. VM을 만들 때 이 로컬 스토리지 계정을 사용하여 가상 디스크 이미지를 업로드합니다.

로컬 스토리지 계정을 만들기 전에 Azure PowerShell을 통해 Azure Resource Manager를 통해 디바이스에 연결하도록 클라이언트를 구성해야 합니다. 자세한 지침은 Azure Stack Edge 디바이스에서 Azure Resource Manager에 연결을 참조하세요.

  1. 일부 매개 변수를 설정합니다.

    $StorageAccountName = "<Storage account name>"    
    
  2. 디바이스에서 새 로컬 스토리지 계정을 만듭니다.

    New-AzStorageAccount -Name $StorageAccountName -ResourceGroupName $ResourceGroupName -Location DBELocal -SkuName Standard_LRS
    

    참고 항목

    Azure Resource Manager를 사용하면 로컬 중복 스토리지(표준 또는 프리미엄)와 같은 로컬 스토리지 계정만 만들 수 있습니다. 계층형 스토리지 계정을 만들려면 자습서: GPU가 포함된 Azure Stack Edge Pro를 사용하여 스토리지 계정을 통해 데이터 전송을 참조하세요.

    다음은 출력 예제입니다.

    PS C:\WINDOWS\system32> New-AzStorageAccount -Name myaseazsa -ResourceGroupName myaseazrg -Location DBELocal -SkuName Standard_LRS
    
    StorageAccountName ResourceGroupName PrimaryLocation SkuName      Kind    AccessTier CreationTime
    ------------------ ----------------- --------------- -------      ----    ---------- ------------
    myaseazsa          myaseazrg         DBELocal        Standard_LRS Storage            6/10/2021 11:45...
    
    PS C:\WINDOWS\system32>
    

만든 기존 로컬 스토리지 계정에 대한 액세스 키를 가져오려면 연결된 리소스 그룹 이름과 로컬 스토리지 계정 이름을 제공합니다.

Get-AzStorageAccountKey

다음은 출력 예제입니다.

PS C:\WINDOWS\system32> Get-AzStorageAccountKey
    
cmdlet Get-AzStorageAccountKey at command pipeline position 1
Supply values for the following parameters:
(Type !? for Help.)
ResourceGroupName: myaseazrg
Name: myaseazsa
    
KeyName    Value                                                                                       Permissions
-------    -----                                                                                       ------
key1       gv3OF57tuPDyzBNc1M7fhil2UAiiwnhTT6zgiwE3TlF/CD217Cvw2YCPcrKF47joNKRvzp44leUe5HtVkGx8RQ==    Full
key2       kmEynIs3xnpmSxWbU41h5a7DZD7v4gGV3yXa2NbPbmhrPt10+QmE5PkOxxypeSqbqzd9si+ArNvbsqIRuLH2Lw==    Full
    
PS C:\WINDOWS\system32>

호스트 파일에 Blob URI 추가

Azure Stack Edge 디바이스에서 Azure Resource Manager에 연결엔드포인트 이름 확인을 위해 호스트 파일 수정에서 Azure Blob Storage에 연결하는 데 사용하는 클라이언트의 호스트 파일에 Blob URI를 이미 추가했습니다. 이 항목은 Blob URI를 추가하는 데 사용되었습니다.

<Device IP address> <storage name>.blob.<appliance name>.<dnsdomain>

인증서 설치

HTTPS를 사용하는 경우 디바이스에 적절한 인증서를 설치해야 합니다. 여기에서 Blob 엔드포인트 인증서를 설치합니다. 자세한 내용은 GPU 디바이스가 있는 Azure Stack Edge Pro에서 인증서 사용을 참조하세요.

VHD 업로드

이전에 만든 로컬 스토리지 계정의 페이지 Blob에 사용할 디스크 이미지를 복사합니다. AzCopy와 같은 도구를 사용하여 스토리지 계정에 VHD(가상 하드 디스크)를 업로드할 수 있습니다.

AzCopy 10에서 다음 명령을 사용합니다.

  1. 해당하는 AzCopy용 API 버전을 포함하는 일부 매개 변수를 설정합니다. 이 예제에서는 AzCopy 10이 사용되었습니다.

    $Env:AZCOPY_DEFAULT_SERVICE_API_VERSION="2019-07-07"    
    $ContainerName = <Container name>
    $ResourceGroupName = <Resource group name>
    $StorageAccountName = <Storage account name>
    $VHDPath = "Full VHD Path"
    $VHDFile = <VHD file name>
    
  2. 원본(이 경우 로컬 시스템)의 VHD를 이전 단계에서 디바이스에서 만든 스토리지 계정으로 복사합니다.

    $StorageAccountKey = (Get-AzStorageAccountKey -ResourceGroupName $ResourceGroupName -Name $StorageAccountName)[0].Value
    $blobendpoint = (Get-AzEnvironment -Name Environment Name).StorageEndpointSuffix
    $StorageAccountContext = New-AzStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey -Endpoint $blobendpoint
    <Create the container if it does not exist>
    $containerName = "con1"
    $container = New-AzStorageContainer -Name $containerName -Context $StorageAccountContext -Permission Container
    $StorageAccountSAS = New-AzStorageAccountSASToken -Service Blob -ResourceType Container,Service,Object -Permission "acdlrw" -Context $StorageAccountContext -Protocol HttpsOnly
    $endPoint = (Get-AzStorageAccount -name $StorageAccountName -ResourceGroupName $ResourceGroupName).PrimaryEndpoints.Blob
    <Path to azcopy.exe> cp "$VHDPath\$VHDFile" "$endPoint$ContainerName$StorageAccountSAS"    
    

    다음은 출력 예제입니다.

    PS C:\windows\system32> $ContainerName = "testcontainer1"
    PS C:\windows\system32> $ResourceGroupName = "myaseazrg"
    PS C:\windows\system32> $StorageAccountName = "myaseazsa"
    PS C:\windows\system32> $VHDPath = "C:\Users\alkohli\Downloads\Ubuntu1604"           
    PS C:\windows\system32> $VHDFile = "ubuntu13.vhd"
    
    PS C:\windows\system32> $StorageAccountKey = (Get-AzStorageAccountKey -ResourceGroupName $ResourceGroupName -Name $StorageAccountName)[0].Value
    PS C:\windows\system32> $endPoint = (Get-AzStorageAccount -name $StorageAccountName -ResourceGroupName $ResourceGroupName).PrimaryEndpoints.Blob
    PS C:\windows\system32> $StorageAccountContext = New-AzStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey -Endpoint $endpoint
    PS C:\windows\system32> $StorageAccountSAS = New-AzStorageAccountSASToken -Service Blob -ResourceType Container,Service,Object -Permission "acdlrw" -Context $StorageAccountContext -Protocol HttpsOnly
    
    PS C:\windows\system32> C:\azcopy\azcopy_windows_amd64_10.10.0\azcopy.exe cp "$VHDPath\$VHDFile" "$endPoint$ContainerName$StorageAccountSAS"
    INFO: Scanning...
    INFO: Any empty folders will not be processed, because source and/or destination doesn't have full folder support
    
    Job 72a5e3dd-9210-3e43-6691-6bebd4875760 has started
    Log file is located at: C:\Users\alkohli\.azcopy\72a5e3dd-9210-3e43-6691-6bebd4875760.log
    
    INFO: azcopy.exe: A newer version 10.11.0 is available to download
    

VHD에서 관리 디스크를 만들려면

이제 업로드된 VHD에서 관리 디스크를 만듭니다.

  1. 일부 매개 변수를 설정합니다.

    $DiskName = "<Managed disk name>"
    $HyperVGeneration = "<Generation of the image: V1 or V2>"
    
  2. 업로드된 VHD에서 관리 디스크를 만듭니다. VHD에 대한 원본 URL을 가져오려면 Storage Explorer에서 VHD가 포함된 스토리지 계정의 컨테이너로 이동합니다. VHD를 선택하고 마우스 오른쪽 단추를 클릭한 다음, 속성을 선택합니다. Blob 속성 대화 상자에서 URI를 선택합니다.

    $StorageAccountId = (Get-AzStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageAccountName).Id    
    $DiskConfig = New-AzDiskConfig -Location DBELocal -HyperVGeneration $HyperVGeneration -StorageAccountId $StorageAccountId -CreateOption Import -SourceUri "Source URL for your VHD"
    New-AzDisk -ResourceGroupName $ResourceGroupName -DiskName $DiskName -Disk $DiskConfig
    

    예제 출력은 다음과 같습니다.

    PS C:\WINDOWS\system32> $DiskName = "myazmd"
    PS C:\WINDOWS\system32  $HyperVGeneration = "V1"
    PS C:\WINDOWS\system32> $StorageAccountId = (Get-AzStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageAccountName).Id
    PS C:\WINDOWS\system32> $DiskConfig = New-AzDiskConfig -Location DBELocal -HyperVGeneration $HyperVGeneration -StorageAccountId $StorageAccountId -CreateOption Import -SourceUri "https://myaseazsa.blob.myasegpu.wdshcsso.com/testcontainer1/ubuntu13.vhd"
    PS C:\WINDOWS\system32> New-AzDisk -ResourceGroupName $ResourceGroupName -DiskName $DiskName -Disk $DiskConfig
    
    ResourceGroupName            : myaseazrg
    ManagedBy                    :
    Sku                          : Microsoft.Azure.Management.Compute.Models.DiskSku
    Zones                        :
    TimeCreated                  : 6/24/2021 12:19:56 PM
    OsType                       :
    HyperVGeneration             : V1
    CreationData                 : Microsoft.Azure.Management.Compute.Models.CreationDat
                                   a
    DiskSizeGB                   : 30
    DiskSizeBytes                : 32212254720
    UniqueId                     : 53743801-cbf2-4d2f-acb4-971d037a9395
    EncryptionSettingsCollection :
    ProvisioningState            : Succeeded
    DiskIOPSReadWrite            : 500
    DiskMBpsReadWrite            : 60
    DiskState                    : Unattached
    Encryption                   : Microsoft.Azure.Management.Compute.Models.Encryption
    Id                           : /subscriptions/.../r
                                   esourceGroups/myaseazrg/providers/Microsoft.Compute/d
                                   isks/myazmd
    Name                         : myazmd
    Type                         : Microsoft.Compute/disks
    Location                     : DBELocal
    Tags                         : {}
    
    PS C:\WINDOWS\system32>
    

관리 디스크에서 VM 이미지 만들기

이제 관리 디스크에서 VM 이미지를 만듭니다.

  1. 일부 매개 변수를 설정합니다.

    $DiskSize = "<Size greater than or equal to size of source managed disk>"
    $OsType = "<linux or windows>" 
    $ImageName = "<Image name>"
    
  2. VM 이미지를 만듭니다. 지원되는 OS 유형은 Linux 및 Windows입니다.

    $imageConfig = New-AzImageConfig -Location DBELocal -HyperVGeneration $hyperVGeneration 
    $ManagedDiskId = (Get-AzDisk -Name $DiskName -ResourceGroupName $ResourceGroupName).Id
    Set-AzImageOsDisk -Image $imageConfig -OsType $OsType -OsState 'Generalized' -DiskSizeGB $DiskSize -ManagedDiskId $ManagedDiskId 
    New-AzImage -Image $imageConfig -ImageName $ImageName -ResourceGroupName $ResourceGroupName  
    

    예제 출력은 다음과 같습니다.

    PS C:\WINDOWS\system32> $OsType = "linux"
    PS C:\WINDOWS\system32> $ImageName = "myaseazlinuxvmimage"
    PS C:\WINDOWS\system32> $DiskSize = 35
    PS C:\WINDOWS\system32> $imageConfig = New-AzImageConfig -Location DBELocal
    PS C:\WINDOWS\system32> $ManagedDiskId = (Get-AzDisk -Name $DiskName -ResourceGroupName $ResourceGroupName).Id
    PS C:\WINDOWS\system32> Set-AzImageOsDisk -Image $imageConfig -OsType $OsType -OsState 'Generalized' -DiskSizeGB $DiskSize -ManagedDiskId $ManagedDiskId
    
    ResourceGroupName    :
    SourceVirtualMachine :
    StorageProfile       : Microsoft.Azure.Management.Compute.Models.ImageStorageProfile
    ProvisioningState    :
    HyperVGeneration     : V1
    Id                   :
    Name                 :
    Type                 :
    Location             : DBELocal
    Tags                 :
    
    PS C:\WINDOWS\system32> New-AzImage -Image $imageConfig -ImageName $ImageName -ResourceGroupName $ResourceGroupName
    
    ResourceGroupName    : myaseazrg
    SourceVirtualMachine :
    StorageProfile       : Microsoft.Azure.Management.Compute.Models.ImageStorageProfile
    ProvisioningState    : Succeeded
    HyperVGeneration     : V1
    Id                   : /subscriptions/.../resourceG
                           roups/myaseazrg/providers/Microsoft.Compute/images/myaseazlin
                           uxvmimage
    Name                 : myaseazlinuxvmimage
    Type                 : Microsoft.Compute/images
    Location             : dbelocal
    Tags                 : {}
    
    PS C:\WINDOWS\system32> 
    

이전에 만든 리소스로 VM 만들기

VM을 만들고 배포하기 전에 하나의 가상 네트워크를 만들고 가상 네트워크 인터페이스를 연결해야 합니다.

Important

다음 규칙이 적용됩니다.

  • 리소스 그룹 간에도 하나의 가상 네트워크만 만들 수 있습니다. 가상 네트워크에는 논리 네트워크와 정확히 동일한 주소 공간이 있어야 합니다.
  • 가상 네트워크에는 서브넷이 하나만 있을 수 있습니다. 서브넷에는 가상 네트워크와 정확히 동일한 주소 공간이 있어야 합니다.
  • 가상 네트워크 인터페이스 카드를 만들 때 정적 할당 방법만 사용할 수 있습니다. 사용자는 개인 IP 주소를 제공해야 합니다.

자동으로 만들어진 가상 네트워크 쿼리

디바이스의 로컬 UI에서 컴퓨팅을 사용하도록 설정하면 ASERG 리소스 그룹 아래에 ASEVNET이라는 가상 네트워크가 자동으로 만들어집니다.

다음 명령을 사용하여 기존 가상 네트워크를 쿼리합니다.

$ArmVn = Get-AzVirtualNetwork -Name ASEVNET -ResourceGroupName ASERG 

가상 네트워크 인터페이스 카드 만들기

가상 네트워크 서브넷 ID를 사용하여 가상 네트워크 인터페이스 카드를 만듭니다.

  1. 일부 매개 변수를 설정합니다.

    $IpConfigName = "<IP config name>"
    $NicName = "<Network interface name>"
    
  2. 가상 네트워크 인터페이스를 만듭니다.

    $ipConfig = New-AzNetworkInterfaceIpConfig -Name $IpConfigName -SubnetId $aRmVN.Subnets[0].Id 
    $Nic = New-AzNetworkInterface -Name $NicName -ResourceGroupName $ResourceGroupName -Location DBELocal -IpConfiguration $IpConfig    
    

    기본적으로 IP는 컴퓨팅이 지원되는 네트워크에서 네트워크 인터페이스에 동적으로 할당됩니다. 네트워크 인터페이스에 고정 IP를 할당하는 경우 -PrivateIpAddress parameter를 사용합니다.

    다음은 출력 예제입니다.

    PS C:\WINDOWS\system32> $IpConfigName = "myazipconfig1"
    PS C:\WINDOWS\system32> $NicName = "myaznic1"
    PS C:\WINDOWS\system32> $ipConfig = New-AzNetworkInterfaceIpConfig -Name $IpConfigName -SubnetId $aRmVN.Subnets[0].Id 
    PS C:\WINDOWS\system32> $ipConfig = New-AzNetworkInterfaceIpConfig -Name $IpConfigName -SubnetId $aRmVN.Subnets[0].Id
    PS C:\WINDOWS\system32> $Nic = New-AzNetworkInterface -Name $NicName -ResourceGroupName $ResourceGroupName -Location DBELocal -IpConfiguration $IpConfig
    PS C:\WINDOWS\system32> $Nic
    
    Name                        : myaznic1
    ResourceGroupName           : myaseazrg
    Location                    : dbelocal
    Id                          : /subscriptions/.../re
                                  sourceGroups/myaseazrg/providers/Microsoft.Network/net
                                  workInterfaces/myaznic1
    Etag                        : W/"0b20057b-2102-4f34-958b-656327c0fb1d"
    ResourceGuid                : e7d4131f-6f01-4492-9d4c-a8ff1af7244f
    ProvisioningState           : Succeeded
    Tags                        :
    VirtualMachine              : null
    IpConfigurations            : [
                                    {
                                      "Name": "myazipconfig1",
                                      "Etag":
                                  "W/\"0b20057b-2102-4f34-958b-656327c0fb1d\"",
                                      "Id": "/subscriptions/.../resourceGroups/myaseazrg/providers/Microsoft.
                                  Network/networkInterfaces/myaznic1/ipConfigurations/my
                                  azipconfig1",
                                      "PrivateIpAddress": "10.126.76.60",
                                      "PrivateIpAllocationMethod": "Dynamic",
                                      "Subnet": {
                                        "Delegations": [],
                                        "Id": "/subscriptions/.../resourceGroups/ASERG/providers/Microsoft.Ne
                                  twork/virtualNetworks/ASEVNET/subnets/ASEVNETsubNet",
                                        "ServiceAssociationLinks": []
                                      },
                                      "ProvisioningState": "Succeeded",
                                      "PrivateIpAddressVersion": "IPv4",
                                      "LoadBalancerBackendAddressPools": [],
                                      "LoadBalancerInboundNatRules": [],
                                      "Primary": true,
                                      "ApplicationGatewayBackendAddressPools": [],
                                      "ApplicationSecurityGroups": []
                                    }
                                  ]
    DnsSettings                 : {
                                    "DnsServers": [],
                                    "AppliedDnsServers": [],
                                    "InternalDomainNameSuffix": "auwlfcx0dhxurjgisct43fc
                                  ywb.a--x.internal.cloudapp.net"
                                  }
    EnableIPForwarding          : False
    EnableAcceleratedNetworking : False
    NetworkSecurityGroup        : null
    Primary                     :
    MacAddress                  : 001DD84A58D1
    
    PS C:\WINDOWS\system32>
    

선택적으로 VM에 대한 가상 네트워크 인터페이스 카드를 만드는 동안 공용 IP를 전달할 수 있습니다. 이 경우 공용 IP는 개인 IP를 반환합니다.

New-AzPublicIPAddress -Name <Public IP> -ResourceGroupName <ResourceGroupName> -AllocationMethod Static -Location DBELocal
$publicIP = (Get-AzPublicIPAddress -Name <Public IP> -ResourceGroupName <Resource group name>).Id
$ipConfig = New-AzNetworkInterfaceIpConfig -Name <ConfigName> -PublicIpAddressId $publicIP -SubnetId $subNetId

VM 만들기

이제 VM 이미지를 사용하여 VM을 만들고 이전에 만든 가상 네트워크에 연결할 수 있습니다.

  1. 만들려는 VM에 로그인하려면 사용자 이름 및 암호를 설정합니다.

    $pass = ConvertTo-SecureString "<Password>" -AsPlainText -Force;
    $cred = New-Object System.Management.Automation.PSCredential("<Enter username>", $pass)
    

    VM을 만들고 전원을 켠 후에는 다음 사용자 이름과 암호를 사용하여 로그인합니다.

  2. 매개 변수를 설정합니다.

    $VmName = "<VM name>"
    $ComputerName = "<VM display name>"
    $OsDiskName = "<OS disk name>"
    
  3. VM을 만듭니다.

    $VirtualMachine =  New-AzVMConfig -VmName $VmName -VMSize "Standard_D1_v2"
    
    $VirtualMachine =  Set-AzVMOperatingSystem -VM $VirtualMachine -Linux -ComputerName $ComputerName -Credential $cred
    
    $VirtualMachine =  Set-AzVmOsDisk -VM $VirtualMachine -Name $OsDiskName -Caching "ReadWrite" -CreateOption "FromImage" -Linux -StorageAccountType Standard_LRS
    
    $nicID = (Get-AzNetworkInterface -Name $NicName -ResourceGroupName $ResourceGroupName).Id
    
    $VirtualMachine =  Add-AzVMNetworkInterface -Vm $VirtualMachine -Id $nicID
    
    $image = ( Get-AzImage -ResourceGroupName $ResourceGroupName -ImageName $ImageName).Id
    
    $VirtualMachine =  Set-AzVMSourceImage -VM $VirtualMachine -Id $image
    
    New-AzVM -ResourceGroupName $ResourceGroupName -Location DBELocal -VM $VirtualMachine -Verbose
    

    예제 출력은 다음과 같습니다.

    PS C:\WINDOWS\system32> $pass = ConvertTo-SecureString "Password1" -AsPlainText -Force;
    PS C:\WINDOWS\system32> $cred = New-Object System.Management.Automation.PSCredential("myazuser", $pass)
    PS C:\WINDOWS\system32> $VmName = "myazvm"
    >> $ComputerName = "myazvmfriendlyname"
    >> $OsDiskName = "myazosdisk1"
    PS C:\WINDOWS\system32> $VirtualMachine =  New-AzVMConfig -VmName $VmName -VMSize "Standard_D1_v2"
    PS C:\WINDOWS\system32> $VirtualMachine =  Set-AzVMOperatingSystem -VM $VirtualMachine -Linux -ComputerName $ComputerName -Credential $cred
    PS C:\WINDOWS\system32> $VirtualMachine =  Set-AzVmOsDisk -VM $VirtualMachine -Name $OsDiskName -Caching "ReadWrite" -CreateOption "FromImage" -Linux -StorageAccountType Standard_LRS
    PS C:\WINDOWS\system32> $nicID = (Get-AzNetworkInterface -Name $NicName -ResourceGroupName $ResourceGroupName).Id
    PS C:\WINDOWS\system32> $nicID/subscriptions/.../resourceGroups/myaseazrg/providers/Microsoft.Network/networkInterfaces/myaznic1
    PS C:\WINDOWS\system32> $VirtualMachine =  Add-AzVMNetworkInterface -VM $VirtualMachine -Id $nicID
    PS C:\WINDOWS\system32> $image = ( Get-AzImage -ResourceGroupName $ResourceGroupName -ImageName $ImageName).Id
    PS C:\WINDOWS\system32> $VirtualMachine =  Set-AzVMSourceImage -VM $VirtualMachine -Id $image
    PS C:\WINDOWS\system32> New-AzVM -ResourceGroupName $ResourceGroupName -Location DBELocal -VM $VirtualMachine -Verbose
    WARNING: Since the VM is created using premium storage or managed disk, existing
    standard storage account, myaseazsa, is used for boot diagnostics.
    VERBOSE: Performing the operation "New" on target "myazvm".
    
    RequestId IsSuccessStatusCode StatusCode ReasonPhrase
    --------- ------------------- ---------- ------------
                             True         OK OK
    
  4. 만든 VM에 할당된 IP를 파악하려면 만든 가상 네트워크 인터페이스를 쿼리합니다. PrivateIPAddress를 찾아 VM의 IP를 복사합니다. 예제 출력은 다음과 같습니다.

    PS C:\WINDOWS\system32> $Nic
    
    Name                        : myaznic1
    ResourceGroupName           : myaseazrg
    Location                    : dbelocal
    Id                          : /subscriptions/.../re
                                  sourceGroups/myaseazrg/providers/Microsoft.Network/net
                                  workInterfaces/myaznic1
    Etag                        : W/"0b20057b-2102-4f34-958b-656327c0fb1d"
    ResourceGuid                : e7d4131f-6f01-4492-9d4c-a8ff1af7244f
    ProvisioningState           : Succeeded
    Tags                        :
    VirtualMachine              : null
    IpConfigurations            : [
                                    {
                                      "Name": "myazipconfig1",
                                      "Etag":
                                  "W/\"0b20057b-2102-4f34-958b-656327c0fb1d\"",
                                      "Id": "/subscriptions/.../resourceGroups/myaseazrg/providers/Microsoft.
                                  Network/networkInterfaces/myaznic1/ipConfigurations/my
                                  azipconfig1",
                                      "PrivateIpAddress": "10.126.76.60",
                                      "PrivateIpAllocationMethod": "Dynamic",
                                      "Subnet": {
                                        "Delegations": [],
                                        "Id": "/subscriptions/.../resourceGroups/ASERG/providers/Microsoft.Ne
                                  twork/virtualNetworks/ASEVNET/subnets/ASEVNETsubNet",
                                        "ServiceAssociationLinks": []
                                      },
                                      "ProvisioningState": "Succeeded",
                                      "PrivateIpAddressVersion": "IPv4",
                                      "LoadBalancerBackendAddressPools": [],
                                      "LoadBalancerInboundNatRules": [],
                                      "Primary": true,
                                      "ApplicationGatewayBackendAddressPools": [],
                                      "ApplicationSecurityGroups": []
                                    }
                                  ]
    DnsSettings                 : {
                                    "DnsServers": [],
                                    "AppliedDnsServers": [],
                                    "InternalDomainNameSuffix": "auwlfcx0dhxurjgisct43fc
                                  ywb.a--x.internal.cloudapp.net"
                                  }
    EnableIPForwarding          : False
    EnableAcceleratedNetworking : False
    NetworkSecurityGroup        : null
    Primary                     :
    MacAddress                  : 001DD84A58D1
    
    PS C:\WINDOWS\system32>
    

VM에 연결

만들어진 Windows VM 또는 Linux VM에 따라 연결 지침이 다를 수 있습니다.

Linux VM에 연결

Linux VM에 연결하려면 다음을 수행합니다.

VM을 만드는 동안 전달된 개인 IP를 사용하여 VM에 연결합니다.

  1. SSH 세션을 열어 IP 주소와 연결합니다.

    ssh -l <username> <ip address>
    
  2. 프롬프트에서 VM을 만들 때 사용한 암호를 제공합니다.

    SSH 키를 제공해야 하는 경우 다음 명령을 사용합니다.

    ssh -i c:/users/Administrator/.ssh/id_rsa Administrator@5.5.41.236

    다음은 VM에 연결하는 경우의 출력 예입니다.

    PS C:\WINDOWS\system32> ssh -l myazuser "10.126.76.60"
    The authenticity of host '10.126.76.60 (10.126.76.60)' can't be established.
    ECDSA key fingerprint is SHA256:V649Zbo58zAYMKreeP7M6w7Na0Yf9QPg4SM7JZVV0E4.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added '10.126.76.60' (ECDSA) to the list of known hosts.
    myazuser@10.126.76.60's password:
    Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.18.0-1013-azure x86_64)
    
     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/advantage
    
     System information disabled due to load higher than 1.0
    
      Get cloud support with Ubuntu Advantage Cloud Guest:
        http://www.ubuntu.com/business/services/cloud
    
    284 packages can be updated.
    192 updates are security updates. 
    
    The programs included with the Ubuntu system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.
    
    Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
    applicable law.
    
    To run a command as administrator (user "root"), use "sudo <command>".
    See "man sudo_root" for details.
    
    myazuser@myazvmfriendlyname:~$ client_loop: send disconnect: Connection reset
    PS C:\WINDOWS\system32>
    

VM을 만들 때 공용 IP 주소를 사용한 경우 해당 IP를 사용하여 VM에 연결할 수 있습니다. 공용 IP를 가져오려면 다음 명령을 실행합니다.

$publicIp = Get-AzPublicIpAddress -Name $PublicIp -ResourceGroupName $ResourceGroupName

이 인스턴스에서 공용 IP는 가상 네트워크 인터페이스를 만드는 동안 전달한 개인 IP와 동일합니다.

Windows VM에 연결

Windows VM에 연결하려면 다음을 수행합니다.

VM을 만드는 동안 전달한 IP를 통해 RDP(원격 데스크톱 프로토콜)를 사용하여 Windows VM에 연결합니다.

  1. 클라이언트에서 RDP를 엽니다.

  2. 시작으로 이동한 다음 mstsc를 입력합니다.

  3. 원격 데스크톱 연결 창에서 VM의 IP 주소와 VM 템플릿 매개 변수 파일에서 사용한 액세스 자격 증명을 입력합니다. 그런 다음 연결을 선택합니다.

    Screenshot of the Remote Desktop Connection pane for connecting via RDP to your Windows VM.

    참고 항목

    신뢰할 수 없는 컴퓨터에 대한 연결을 승인해야 할 수도 있습니다.

이제 어플라이언스에서 실행되는 VM에 로그인되었습니다.

VM 관리

다음 섹션에서는 Azure Stack Edge Pro 디바이스에서 만들 수 있는 몇 가지 일반적인 작업에 대해 설명합니다.

디바이스에서 실행 중인 VM 나열

Azure Stack Edge 디바이스에서 실행 중인 모든 VM 목록을 반환하려면 다음 명령을 실행합니다.

Get-AzVM -ResourceGroupName <String> -Name <String>

이 cmdlet에 대한 자세한 내용은 Get-AzVM을 참조하세요.

VM 켜기

디바이스에서 실행 중인 가상 머신을 켜려면 다음 cmdlet을 실행합니다.

Start-AzVM [-Name] <String> [-ResourceGroupName] <String>

이 cmdlet에 대한 자세한 내용은 Start-AzVM을 참조하세요.

VM 일시 중지 또는 종료

디바이스에서 실행 중인 가상 머신을 중지하거나 종료하려면 다음 cmdlet을 실행합니다.

Stop-AzVM [-Name] <String> [-StayProvisioned] [-ResourceGroupName] <String>

이 cmdlet에 대한 자세한 내용은 Stop-AzVM cmdlet을 참조하세요.

데이터 디스크 추가

VM의 워크로드 요구 사항이 증가하면 데이터 디스크를 추가해야 할 수 있습니다. 이렇게 하려면 다음 명령을 실행합니다.

Add-AzRmVMDataDisk -VM $VirtualMachine -Name "disk1" -VhdUri "https://contoso.blob.core.windows.net/vhds/diskstandard03.vhd" -LUN 0 -Caching ReadOnly -DiskSizeinGB 1 -CreateOption Empty 
 
Update-AzVM -ResourceGroupName "<Resource Group Name string>" -VM $VirtualMachine

VM 삭제

디바이스에서 가상 머신을 제거하려면 다음 cmdlet을 실행합니다.

Remove-AzVM [-Name] <String> [-ResourceGroupName] <String>

이 cmdlet에 대한 자세한 내용은 Remove-AzVm cmdlet을 참조하세요.

다음 단계

Azure Resource Manager cmdlet