Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
안녕하세요, 이번 포스트에서는 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 방법' 을 소개해 드리겠습니다.