Azure 신규 포탈에서 재사용 가능한 윈도우 이미지 만들기(Windows Sysprep) - (2)
안녕하세요, 이번 포스트에서는 Azure 신규포탈에서 VM 을 생성하고 Sysprep 한 후, 이미지를 이용하여 VM 을 생성하고 배포하는 과정을 소개합니다. 내용이 많은 관계로 2편으로 나누었습니다.
- 1편 - VM 환경구성 및 Sysprep 후 이미지 캡처하여 저장
- 2편 - VM 이미지 및 PowerShell을 이용한 VM 생성 및 배포과정
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 및 비밀번호를 설정하는 과정입니다.
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 를 확인하실 수 있습니다.
2. 새롭게 생성된 VM의 구성 정보 확인
Sysprep 이 잘 되었는지 확인하는 과정만 남았습니다. 가상컴퓨터 목록에서 vm-copied 를 선택하시기 바랍니다.
VM 에 접속하기 위해 할당된 공용 IP 주소를 확인하는 과정입니다.
웹 브라우저에 위에서 복사해둔 IP 주소를 입력하여 접속합니다.
새롭게 생성한 VM에 IIS 서버가 설치되어 있음을 확인하실 수 있습니다. (기존의 VM과 동일한 환경으로 구성되어 있기 때문에, 별도로 IIS 서버를 설치 하지 않았는데도 이미 IIS 가 설치가 되어 있는 것입니다.)
캡처한 VM 이미지가 저장된 주소를 확인하는 방법
1) 리소스 그룹을 선택한 후 2)newportal-sysprep 검색 하여 해당 리소스 그룹에 접속합니다
리소스 그룹에서 확인할 수 있는 목록 중, newportalsysprep7120 이라는 이름의 저장소를 선택합니다.
서비스 목록의 Blob 저장소를 선택합니다.
Blob 서비스 목록중 vhds를 선택합니다.
vhds 컨테이너 목록 중, vm-original로 시작하고, 확장자가 .vhd 인 파일이 저장된 URL 을 복사합니다.
긴 포스트 읽어주셔서 감사합니다.
시리즈의 마지막 편에서는 'Azure 신규포털에서 Linux VM의 재사용가능한 이미지 만드는 과정, Deprovision 방법' 을 소개해 드리겠습니다.