Azure 신규 포탈에서 재사용 가능한 윈도우 이미지 만들기(Windows Sysprep) - (2)

안녕하세요, 이번 포스트에서는 Azure 신규포탈에서 VM 을 생성하고 Sysprep 한 후, 이미지를 이용하여 VM 을 생성하고 배포하는  과정을 소개합니다. 내용이 많은 관계로 2편으로 나누었습니다.

Azure 포탈을 이용하는 것과는 다르게, 정해줘야 하는 값도 많고 사소한 실수 때문에 에러가 발생하여 처음접하시는 분들은 어렵게 느끼실 수 있지만 차근차근 따라해보시기 바랍니다. PowerShell을 이용하여 Azure의 풍부한 기능을 이용하실 수 있습니다.  PowerShell을 사용하여 VM을 만들어 보시면 많은 도움 받으실 수 있으실 것입니다.

Step 3. 생성한 이미지를 이용하여 새로운 VM 만들기

1. 캡처한 이미지를 이용하여 PowerShell에서 새로운 VM 생성
: 이미지를 이용하여 VM을 만드는 과정으로 1) 네트워크 리소스 생성한 후에 캡처한 이미지를 이용하여 2) 새로운 VM 을 만들어 보도록 하겠습니다.

1) 네트워크 리소스 만들기
네트워크 리소스(IP 주소, 서브넷, 가상네트워크, 랜카드 등등) 정보를 설정하는 과정입니다.

  • $pipName = "vm-copied-pip"공용 IP 주소(PIP) 의 이름을 정하는 변수입니다.
  • $rgName = "newportal-sysprep" 는 리소스 그룹의 이름을 정하는 변수입니다.
  • $location = "eastasia" 는 네트워크 리소스가 속할 지역을 정하는 변수입니다.
 $pipName = "vm-copied-pip"
$rgName = "newportal-sysprep"
$location = "eastasia"
$pip = New-AzureRmPublicIpAddress -Name $pipName -ResourceGroupName $rgName -Location $location -AllocationMethod Dynamic

서브넷 이름과 주소를 지정한 후, 서브넷을 생성하는 과정입니다.

  • $subnet1Name = "vm-origin-subnet1" 은 서브넷의 이름을 정하는 변수입니다.
  • $vnetSubnetAddressPrefix = "10.0.0.0/24"CIDR 표기법을 이용하여 표기된 서브넷을 구성하는 주소 접두사를 정하는 변수입니다.
 $subnet1Name = "vm-origin-subnet1"
$vnetSubnetAddressPrefix = "10.0.0.0/24"
$subnetconfig = New-AzureRmVirtualNetworkSubnetConfig -Name $subnet1Name -AddressPrefix $vnetSubnetAddressPrefix

가상 네트워크 이름, 리소스 그룹, 위치, 주소, 서브넷 정보를 이용하여 가상네트워크를 구성하는 과정입니다.

  • $vnetName = "vm-copied-vnet" 가상네트워크의 이름을 정하는 변수입니다.
  • $vnetAddressPrefix = "10.0.0.0/24" 가상네트워크의 주소 접두사를 정하는 변수입니다.
 $vnetName = "vm-copied-vnet"
$vnetAddressPrefix = "10.0.0.0/24"
$vnet = New-AzureRmVirtualNetwork -Name $vnetName -ResourceGroupName $rgName -Location $location -AddressPrefix $vnetAddressPrefix -Subnet $subnetconfig

네트워크 인터페이스 카드(NIC) 이름을 정하고 생성하는 과정입니다.

  • $nicname = "vm-copied-nic" 네트워크 인터페이스의 카드의 이름을 정하는 변수입니다.
 $nicname = "vm-copied-nic"
$nic = New-AzureRmNetworkInterface -Name $nicname -ResourceGroupName $rgName -Location $location -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id

 

2) 이미지를 이용하여 VM 만들기
네트워크 구성을 완료한 후, 미리 만들어둔 VHD 이미지를 이용하여 기존에 구성해둔 VM과 동일한 환경을 가지는 VM을 만들어 보도록 하겠습니다.

계정정보를 생성하는 명령어 입니다.

 $cred = Get-Credential

새롭게 생성할 VM 의 관리자용 ID 및 비밀번호를 설정하는 과정입니다.

arm cred

VHD 이미지가 저장되어 있는 저장소의 이름을 확인하고, 저장소 계정정보를 가져옵니다.

  • $storageAccName = "newportalsysprep7120" 이미지가 저장되어 있는 저장소 이름을 정하는 옵션입니다.
 $storageAccName = "newportalsysprep7120"
$storageAcc = Get-AzureRmStorageAccount -ResourceGroupName $rgName -AccountName $storageAccName

VM 이름을 변수로 저장한 후, A1 크기의 VM Configuration 정보를 저장합니다.

  • $vmName = "vm-copied" VM 이름을 정하는 변수입니다.
  • -VMSize "Standard_A1" VM 크기를 정하는 옵션입니다.
 $vmName = "vm-copied"
$vmConfig = New-AzureRmVMConfig -VMName $vmName -VMSize "Standard_A1"

가상 컴퓨터 이름과, 운영체제 정보, 네트워크 정보 OS Disk 정보를 저장하는 과정입니다.

  • $computerName = "vm-copied" 가상컴퓨터 이름을 정하는 변수입니다
  • $osDiskName = "vm-copied-os" OS Disk 이름을 정하는 변수입니다
 $computerName = "vm-copied"
$vm = Set-AzureRmVMOperatingSystem -VM $vmConfig -Windows -ComputerName $computerName -Credential $cred -ProvisionVMAgent -EnableAutoUpdate
$vm = Add-AzureRmVMNetworkInterface -VM $vm -Id $nic.Id
$osDiskName = "vm-copied-os" 
$osDiskUri = '{0}vhds/{1}{2}.vhd' -f $storageAcc.PrimaryEndpoints.Blob.ToString(), $vmName.ToLower(), $osDiskName 

사전에 캡처해둔 이미지를 이용하여 VM 정보를 설정합니다. '캡처해둔 VM 이미지 주소를 확인하는 방법'은 포스트 맨 아래에 자세하게 안내되어 있습니다.

  • $urlOfCapturedImageVhd = "https://newportalsysprep7120.blob.core.windows.net/vhds/vm-original20165292317.vhd" VM 이미지가 저장된 주소를 가리키는 변수입니다.
 $urlOfCapturedImageVhd = "https://newportalsysprep7120.blob.core.windows.net/vhds/vm-original20165292317.vhd"
$vm = Set-AzureRmVMOSDisk -VM $vm -Name $osDiskName -VhdUri $osDiskUri -CreateOption fromImage -SourceImageUri $urlOfCapturedImageVhd -Windows

새로운 VM을 생성합니다. VM 을 생성하는 명령어이기 때문에 완료되기까지 약 10분 정도의 시간이 소요되오니 참고하시기 바랍니다.

 New-AzureRmVM -ResourceGroupName $rgName -Location $location -VM $vm

현재 리소스 그룹의 VM 목록을 확인하는 명령어를 이용하여 VM이 잘 생성되었는지 확인해보도록 하겠습니다.

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

기존에 만들어 둔 VM인 vm-original 과, 새롭게 생성한 VM인 vm-copied 를 확인하실 수 있습니다.

arm vm list2

 

2. 새롭게 생성된 VM의 구성 정보 확인
Sysprep 이 잘 되었는지 확인하는 과정만 남았습니다. 가상컴퓨터 목록에서  vm-copied 를 선택하시기 바랍니다.

vm list

VM 에 접속하기 위해 할당된 공용 IP 주소를 확인하는 과정입니다.

vm-copied dashboard

웹 브라우저에 위에서 복사해둔 IP 주소를 입력하여 접속합니다.
vm-copied iis installed

새롭게 생성한 VM에 IIS 서버가 설치되어 있음을 확인하실 수 있습니다. (기존의 VM과 동일한 환경으로 구성되어 있기 때문에, 별도로 IIS 서버를 설치 하지 않았는데도 이미 IIS 가 설치가 되어 있는 것입니다.)

 

캡처한 VM 이미지가 저장된 주소를 확인하는 방법

1) 리소스 그룹을 선택한 후 2)newportal-sysprep 검색 하여 해당 리소스 그룹에 접속합니다

vhd url check1

리소스 그룹에서 확인할 수 있는 목록 중, newportalsysprep7120 이라는 이름의 저장소를 선택합니다.

vhd url check2

서비스 목록의 Blob 저장소를 선택합니다.

vhd url check3

Blob 서비스 목록중 vhds를 선택합니다.

vhd url check4
vhds 컨테이너 목록 중, vm-original로 시작하고, 확장자가 .vhd 인 파일이 저장된 URL 을 복사합니다.

vhd url check5

긴 포스트 읽어주셔서 감사합니다.
시리즈의 마지막 편에서는 'Azure 신규포털에서 Linux VM의 재사용가능한 이미지 만드는 과정, Deprovision 방법' 을 소개해 드리겠습니다.