다음을 통해 공유


Azure에 일반화된 VHD를 업로드하여 새 VM 만들기

이 항목에서는 일반화된 관리되지 않는 디스크를 스토리지 계정에 업로드한 다음 업로드된 디스크를 사용하여 새 VM을 만드는 방법에 대해 설명합니다. 일반화된 VHD 이미지에는 Sysprep을 사용하여 제거된 모든 개인 계정 정보가 포함되어 있습니다.

스토리지 계정의 전문화된 VHD에서 VM을 만들려는 경우 전문화된 VHD에서 VM 만들기를 참조하세요.

이 항목에서는 스토리지 계정을 사용하지만 고객은 대신 Managed Disks를 사용하는 것이 좋습니다. 관리 디스크를 사용하여 새 VM을 준비, 업로드 및 만드는 방법에 대한 전체 연습을 보려면 Managed Disks를 사용하여 Azure에 업로드된 일반화된 VHD에서 새 VM 만들기를 참조하세요.

VM 준비

일반화된 VHD에는 Sysprep을 사용하여 제거된 모든 개인 계정 정보가 포함되어 있습니다. 새 VM을 만드는 이미지로 VHD를 사용하려는 경우 다음을 수행해야 합니다.

Sysprep을 사용하여 Windows 가상 머신 일반화

이 섹션에서는 이미지로 사용하기 위해 Windows 가상 머신을 일반화하는 방법을 보여 줍니다. Sysprep은 여러 정보 중에서 모든 개인 계정 정보를 제거하고 이미지로 사용할 컴퓨터를 준비합니다. Sysprep에 대한 자세한 내용은 Sysprep 사용 방법: 소개를 참조하세요.

가상 컴퓨터에서 실행되는 서버 역할이 Sysprep에서 지원되는지 확인합니다. 자세한 내용은 서버 역할에 대한 Sysprep 지원

중요

Azure에 VHD를 업로드하기 전에 Sysprep을 처음으로 실행하는 경우 Sysprep을 실행하기 전에 VM을 준비해야 합니다.

  1. Windows 가상 머신에 로그인

  2. 관리자로 명령 프롬프트 창을 엽니다. 디렉터리를 %windir%\system32\sysprep로 변경한 후 sysprep.exe를 실행합니다.

  3. 시스템 준비 도구 대화 상자에서 시스템 OOBE(첫 실행 경험) 입력을 선택하고 일반화 확인란을 선택했는지 확인합니다.

  4. 종료 옵션에서 종료를 선택합니다.

  5. 확인을 클릭합니다.

    Sysprep 시작

  6. Sysprep이 완료되면 가상 머신을 종료합니다.

중요

Azure에 VHD를 업로드하거나 VM에서 이미지를 만드는 작업을 완료할 때까지 VM을 다시 시작하지 않습니다. VM이 실수로 다시 시작되면 Sysprep을 실행하여 다시 일반화합니다.

VHD 업로드

Azure Storage 계정에 VHD 업로드

Azure에 로그인

PowerShell 버전 1.4 이상을 아직 설치하지 않은 경우 Azure PowerShell 설치 및 구성 방법을 참조하세요.

  1. Azure PowerShell을 열고 Azure 계정에 로그인합니다. Azure 계정 자격 증명을 입력하기 위한 팝업 창이 열립니다.

    Connect-AzAccount
    
  2. 사용 가능한 구독에 대한 구독을 ID를 가져옵니다.

    Get-AzSubscription
    
  3. 구독 ID를 사용하여 올바른 구독을 설정합니다. <subscriptionID>를 올바른 구독의 ID로 바꿉니다.

    Select-AzSubscription -SubscriptionId "<subscriptionID>"
    

스토리지 계정 가져오기

업로드한 VM 이미지를 저장할 Azure 스토리지 계정이 필요합니다. 기존 스토리지 계정을 사용하거나 새 계정을 만들 수 있습니다.

사용 가능한 스토리지 계정을 표시하려면 다음을 입력합니다.

Get-AzStorageAccount

기존 스토리지 계정을 사용하려면 VM 이미지 업로드 섹션으로 이동합니다.

스토리지 계정을 만들어야 하는 경우 다음 단계를 따릅니다.

  1. 스토리지 계정을 만들어야 하는 리소스 그룹의 이름을 알아야 합니다. 구독의 모든 리소스 그룹을 찾으려면 다음을 입력합니다.

    Get-AzResourceGroup
    

    미국 서부 지역에 myResourceGroup 이라는 이름의 리소스 그룹을 만들려면 다음을 입력합니다.

    New-AzResourceGroup -Name myResourceGroup -Location "West US"
    
  2. New-AzStorageAccount cmdlet을 사용하여 이 리소스 그룹에 mystorageaccount라는 이름의 스토리지 계정을 만듭니다.

    New-AzStorageAccount -ResourceGroupName myResourceGroup -Name mystorageaccount -Location "West US" `
        -SkuName "Standard_LRS" -Kind "Storage"
    

업로드 시작

Add-AzVhd cmdlet을 사용하여 스토리지 계정의 컨테이너에 이미지를 업로드합니다. 이 예제에서는 "C:\Users\Public\Documents\Virtual hard disks\"에서 myResourceGroup 리소스 그룹의 mystorageaccount라는 스토리지 계정에 파일 myVHD.vhd를 업로드합니다. 파일은 mycontainer라는 컨테이너에 배치되고 새 파일 이름은 myUploadedVHD.vhd가 됩니다.

$rgName = "myResourceGroup"
$urlOfUploadedImageVhd = "https://mystorageaccount.blob.core.windows.net/mycontainer/myUploadedVHD.vhd"
Add-AzVhd -ResourceGroupName $rgName -Destination $urlOfUploadedImageVhd `
    -LocalFilePath "C:\Users\Public\Documents\Virtual hard disks\myVHD.vhd"

성공하면 다음과 유사한 응답을 얻게 됩니다.

MD5 hash is being calculated for the file C:\Users\Public\Documents\Virtual hard disks\myVHD.vhd.
MD5 hash calculation is completed.
Elapsed time for the operation: 00:03:35
Creating new page blob of size 53687091712...
Elapsed time for upload: 01:12:49

LocalFilePath           DestinationUri
-------------           --------------
C:\Users\Public\Doc...  https://mystorageaccount.blob.core.windows.net/mycontainer/myUploadedVHD.vhd

이 명령은 네트워크 연결 및 VHD 파일의 크기에 따라 완료하는 데 다소 시간이 걸립니다.

새 VM 만들기

이제 업로드된 VHD를 사용하여 새 VM을 만들 수 있습니다.

VHD의 URI 설정

VHD에 대한 URI는 형식: https://mystorageaccount.blob.core.windows.net/mycontainer/MyVhdName.vhd. 이 예에서는 myVHD로 명명된 VHD가 mycontainer 컨테이너의 mystorageaccount 스토리지 계정에 있습니다.

$imageURI = "https://mystorageaccount.blob.core.windows.net/mycontainer/myVhd.vhd"

가상 네트워크 만들기

가상 네트워크의 vNet 및 서브넷을 만듭니다.

  1. 서브넷을 만듭니다. 다음 예제에서는 10.0.0.0/24 주소 접두사가 있는 myResourceGroup 리소스 그룹에 mySubnet으로 명명된 서브넷을 만듭니다.

    $rgName = "myResourceGroup"
    $subnetName = "mySubnet"
    $singleSubnet = New-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.0.0/24
    
  2. 가상 네트워크 만들기 다음 예제에서는 10.0.0.0/16 주소 접두사가 있는 미국 서부 위치에 myVnet으로 명명된 가상 네트워크를 만듭니다.

    $location = "WestUS"
    $vnetName = "myVnet"
    $vnet = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgName -Location $location `
        -AddressPrefix 10.0.0.0/16 -Subnet $singleSubnet
    

공용 IP 주소 및 네트워크 인터페이스 만들기

가상 네트워크에서 가상 머신과 통신하려면 공용 IP 주소 및 네트워크 인터페이스가 필요합니다.

  1. 공용 IP 주소 만들기. 이 예에서는 myPip라는 공용 IP 주소를 만듭니다.

    $ipName = "myPip"
    $pip = New-AzPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $location `
        -AllocationMethod Dynamic
    
  2. NIC 만들기. 이 예에서는 myNic라는 NIC를 만듭니다.

    $nicName = "myNic"
    $nic = New-AzNetworkInterface -Name $nicName -ResourceGroupName $rgName -Location $location `
        -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id
    

네트워크 보안 그룹 및 RDP 규칙 만들기

RDP를 사용하여 VM에 로그인할 수 있으려면 포트 3389에 대한 RDP 액세스를 허용하는 보안 규칙이 필요합니다.

이 예에서는 포트 3389를 통한 RDP 트래픽을 허용하는 myRdpRule이라는 규칙을 포함하는 myNsg로 명명된 NSG를 만듭니다. NSG에 대한 자세한 내용은 PowerShell을 사용하여 Azure에서 VM으로 포트 열기를 참조하세요.

$nsgName = "myNsg"

$rdpRule = New-AzNetworkSecurityRuleConfig -Name myRdpRule -Description "Allow RDP" `
    -Access Allow -Protocol Tcp -Direction Inbound -Priority 110 `
    -SourceAddressPrefix Internet -SourcePortRange * `
    -DestinationAddressPrefix * -DestinationPortRange 3389

$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $rgName -Location $location `
    -Name $nsgName -SecurityRules $rdpRule

가상 네트워크에 대한 변수 만들기

완료된 가상 네트워크에 대한 변수를 만듭니다.

$vnet = Get-AzVirtualNetwork -ResourceGroupName $rgName -Name $vnetName

VM 만들기

다음 PowerShell 스크립트는 가상 머신 구성을 설정하고 업로드된 VM 이미지를 새 설치에 대한 원본으로 사용하는 방법을 보여 줍니다.

# Enter a new user name and password to use as the local administrator account 
    # for remotely accessing the VM.
    $cred = Get-Credential

    # Name of the storage account where the VHD is located. This example sets the 
    # storage account name as "myStorageAccount"
    $storageAccName = "myStorageAccount"

    # Name of the virtual machine. This example sets the VM name as "myVM".
    $vmName = "myVM"

    # Size of the virtual machine. This example creates "Standard_D2_v2" sized VM. 
    # See the VM sizes documentation for more information: 
    # https://azure.microsoft.com/documentation/articles/virtual-machines-windows-sizes/
    $vmSize = "Standard_D2_v2"

    # Computer name for the VM. This examples sets the computer name as "myComputer".
    $computerName = "myComputer"

    # Name of the disk that holds the OS. This example sets the 
    # OS disk name as "myOsDisk"
    $osDiskName = "myOsDisk"

    # Assign a SKU name. This example sets the SKU name as "Standard_LRS"
    # Valid values for -SkuName are: Standard_LRS - locally redundant storage, Standard_ZRS - zone redundant
    # storage, Standard_GRS - geo redundant storage, Standard_RAGRS - read access geo redundant storage,
    # Premium_LRS - premium locally redundant storage. 
    $skuName = "Standard_LRS"

    # Get the storage account where the uploaded image is stored
    $storageAcc = Get-AzStorageAccount -ResourceGroupName $rgName -AccountName $storageAccName

    # Set the VM name and size
    $vmConfig = New-AzVMConfig -VMName $vmName -VMSize $vmSize

    #Set the Windows operating system configuration and add the NIC
    $vm = Set-AzVMOperatingSystem -VM $vmConfig -Windows -ComputerName $computerName `
        -Credential $cred -ProvisionVMAgent -EnableAutoUpdate
    $vm = Add-AzVMNetworkInterface -VM $vm -Id $nic.Id

    # Create the OS disk URI
    $osDiskUri = '{0}vhds/{1}-{2}.vhd' `
        -f $storageAcc.PrimaryEndpoints.Blob.ToString(), $vmName.ToLower(), $osDiskName

    # Configure the OS disk to be created from the existing VHD image (-CreateOption fromImage).
    $vm = Set-AzVMOSDisk -VM $vm -Name $osDiskName -VhdUri $osDiskUri `
        -CreateOption fromImage -SourceImageUri $imageURI -Windows

    # Create the new VM
    New-AzVM -ResourceGroupName $rgName -Location $location -VM $vm

VM이 만들어졌는지 확인

완료되면 새로 만든 VM은 Azure 포털에서 찾아보기>가상 머신에 표시되며 다음 PowerShell 명령을 사용해도 표시할 수 있습니다.

    $vmList = Get-AzVM -ResourceGroupName $rgName
    $vmList.Name

다음 단계

Azure PowerShell을 사용하여 새 가상 머신을 관리하려면 Azure Resource Manager 및 PowerShell을 사용하여 가상 머신 관리를 참조하세요.