연습 - Azure PowerShell을 사용하여 대화형으로 Azure 리소스 만들기
원래 시나리오에서는 CRM(고객 관계 관리) 소프트웨어를 테스트하려면 VM(가상 머신)을 만들어야 합니다. 새 빌드를 사용할 수 있게 되면 새 VM을 스핀업하여 정리 이미지에서 전체 설치 환경을 테스트하려고 합니다. 테스트가 완료되면 VM을 삭제할 수 있습니다.
VM을 만드는 명령을 사용해 보겠습니다.
Azure PowerShell을 사용하여 Linux VM 만들기
Azure 샌드박스를 사용하고 있으므로 리소스 그룹을 만들 필요가 없습니다. 대신 기존 샌드박스 리소스 그룹
Azure PowerShell을 사용하여 새 Azure VM을 만드는 방법은 다음과 같습니다.
VM을 만들려면
New-AzVM
cmdlet을 사용합니다.샌드박스 리소스 그룹을 지정합니다.
[샌드박스 리소스 그룹 이름] .조직의 명명 표준에 따라 VM의 이름을 지정합니다.
사용 가능한 Azure 샌드박스 위치 목록에서 가장 가까운 위치를 선택합니다.
- westus2
- southcentralus
- centralus
- eastus
- westeurope
- southeastasia
- japaneast
- brazilsouth
- australiasoutheast
- centralindia
Ubuntu Linux 이미지를 사용합니다.
Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest
.VM 관리자 자격 증명을 설정하려면
Get-Credential
cmdlet을 사용합니다.SSH 액세스를 위해 포트가
22
인 OpenPorts 매개 변수를 추가합니다.SSH 로그인을 위한 공용 IP 주소 이름을 만듭니다.
$azVmParams = @{ ResourceGroupName = '<rgn>[sandbox resource group name]</rgn>' Name = 'testvm-eus-01' Credential = (Get-Credential) Location = 'eastus' Image = 'Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest' OpenPorts = 22 PublicIpAddressName = 'testvm-eus-01' } New-AzVm @azVmParams
팁
복사 단추를 사용하여 클립보드에 명령을 복사할 수 있습니다. 붙여넣으려면 Cloud Shell 터미널에서 새 줄을 마우스 오른쪽 단추로 클릭하고 붙여넣기를 선택하거나 Shift+Insert 바로 가기 키(macOS의 경우 ⌘+V)를 사용합니다.
자격 증명 입력:
메시지가 표시되면 지침에 따라 사용자 이름과 암호를 입력합니다. 암호는 길이가 12~123자여야 하며 소문자, 대문자, 숫자, 특수 문자(정규식 일치 [\W_]) 등 네 가지 복잡성 요구 사항 중 세 가지를 충족해야 합니다. 자세한 내용은 Linux VM FAQ를 참조하세요.
VM 만들기를 기다립니다.
VM 만들기 프로세스를 완료하는 데 몇 분 정도 걸립니다.
VM을 쿼리합니다.
완료되면 VM을 쿼리하고 VM 개체를 변수(
$vm
)에 할당합니다.$vm = Get-AzVM -Name testvm-eus-01 -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
VM에 대한 정보를 봅니다.
VM에 대한 정보를 보려면 변수의 콘텐츠를 표시합니다.
$vm
예제 출력:
ResourceGroupName : <rgn>[sandbox resource group name]</rgn> Id : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rgn>[sandbox resource group name]</rgn>/providers/Microsoft.Compute/virtualMachines/testvm-eus-01 VmId : 00000000-0000-0000-0000-000000000000 Name : testvm-eus-01 Type : Microsoft.Compute/virtualMachines Location : eastus Tags : {} HardwareProfile : {VmSize} NetworkProfile : {NetworkInterfaces} OSProfile : {ComputerName, AdminUsername, LinuxConfiguration, Secrets} ProvisioningState : Succeeded StorageProfile : {ImageReference, OsDisk, DataDisks} ...
VM 속성을 검사합니다.
멤버 액세스 연산자(
.
)를 통해 복합 개체를 검사할 수 있습니다. 예를 들어 HardwareProfile 섹션과 연결된VMSize
개체의 속성을 보려면 다음 명령을 실행합니다.$vm.HardwareProfile
또는 디스크 중 하나에 대한 정보를 가져오려면 다음 명령을 실행합니다.
$vm.StorageProfile.OsDisk
사용 가능한 VM 크기를 가져옵니다.
VM 개체를 다른 cmdlet에 전달하여 사용 가능한 크기를 가져옵니다.
$vm | Get-AzVMSize
공용 IP 주소 가져오기:
VM에 연결하기 위한 공용 IP 주소를 검색하고 이를 변수에 저장합니다.
$ip = Get-AzPublicIpAddress -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name testvm-eus-01
VM에 연결:
변수의 IP 주소를 사용하여 SSH로 VM에 연결합니다. 예를 들어, 사용자 이름이
bob
인 경우 다음 명령을 사용합니다.ssh bob@$($ip.IpAddress)
exit를 입력하여 로그아웃합니다.
VM 삭제
더 많은 명령을 시도하려면 VM을 삭제해 보겠습니다. 다음 단계를 수행합니다.
VM 종료:
다음 명령을 실행합니다.
Stop-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName
계속할지 묻는 메시지가 나타나면 Y를 입력하고 Enter 키를 누릅니다.
VM을 삭제합니다.
VM이 중지되면
Remove-AzVM
cmdlet을 실행하여 삭제합니다.Remove-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName
계속할지 묻는 메시지가 나타나면 Y를 입력하고 Enter 키를 누릅니다.
리소스 그룹의 모든 리소스를 나열합니다.
리소스 그룹의 모든 리소스를 나열하려면
Get-AzResource
cmdlet을 사용합니다. 결과는 특정 속성을 반환하기 위해Select-Object
로 파이프됩니다.Get-AzResource -ResourceGroupName $vm.ResourceGroupName | Select-Object -Property Name, ResourceType, ResourceGroupName
디스크, 가상 네트워크 등을 포함하여 아직 존재하는 여러 리소스가 표시되어야 합니다.
Name ResourceType ResourceGroupName ---- ------------ ----------------- cloudshell Microsoft.Storage/storageAccounts <rgn>[sandbox resource group name]</rgn> testvm-eus-01 Microsoft.Network/virtualNetworks <rgn>[sandbox resource group name]</rgn> testvm-eus-01 Microsoft.Network/publicIPAddresses <rgn>[sandbox resource group name]</rgn> testvm-eus-01 Microsoft.Network/networkSecurityGroups <rgn>[sandbox resource group name]</rgn> testvm-eus-01 Microsoft.Network/networkInterfaces <rgn>[sandbox resource group name]</rgn> testvm-eus-01_OsDisk_1 Microsoft.Compute/disks <rgn>[sandbox resource group name]</rgn>
Remove-AzVM
명령은 VM만 삭제합니다. 다른 리소스는 정리하지 않습니다. 수동으로 정리하려면 다음 단계를 따릅니다.네트워크 인터페이스를 삭제합니다.
Get-AzNetworkInterface -ResourceGroupName $vm.ResourceGroupName -Name $vm.Name | Remove-AzNetworkInterface
계속할지 묻는 메시지가 나타나면 Y를 입력하고 Enter 키를 누릅니다.
네트워크 보안 그룹을 삭제합니다.
Get-AzNetworkSecurityGroup -ResourceGroupName $vm.ResourceGroupName | Remove-AzNetworkSecurityGroup
계속할지 묻는 메시지가 나타나면 Y를 입력하고 Enter 키를 누릅니다.
공용 IP 주소를 삭제합니다.
Get-AzPublicIpAddress -ResourceGroupName $vm.ResourceGroupName | Remove-AzPublicIpAddress
계속할지 묻는 메시지가 나타나면 Y를 입력하고 Enter 키를 누릅니다.
가상 네트워크 삭제:
Get-AzVirtualNetwork -ResourceGroupName $vm.ResourceGroupName | Remove-AzVirtualNetwork
계속할지 묻는 메시지가 나타나면 Y를 입력하고 Enter 키를 누릅니다.
관리되는 OS 디스크를 삭제합니다.
Get-AzDisk -ResourceGroupName $vm.ResourceGroupName -DiskName $vm.StorageProfile.OSDisk.Name | Remove-AzDisk
계속할지 묻는 메시지가 나타나면 Y를 입력하고 Enter 키를 누릅니다.
모든 리소스가 제거되었는지 확인합니다.
리소스 그룹을 확인하여 모든 리소스가 제거되었는지 확인합니다.
Get-AzResource -ResourceGroupName $vm.ResourceGroupName | Select-Object -Property Name, ResourceType, ResourceGroupName
이러한 명령을 대화형으로 실행하는 동안 더 나은 방식은 PowerShell 스크립트를 작성하는 것입니다. 스크립트를 사용하면 나중에 VM을 만들거나 삭제하기 위한 논리를 재사용할 수 있습니다.
다음으로 PowerShell 스크립트를 사용하여 이러한 작업을 자동화하는 방법을 살펴보겠습니다.