연습 - Azure PowerShell을 사용하여 대화형으로 Azure 리소스 만들기

완료됨

원래 시나리오에서는 CRM(고객 관계 관리) 소프트웨어를 테스트하려면 VM(가상 머신)을 만들어야 합니다. 새 빌드를 사용할 수 있게 되면 새 VM을 스핀업하여 정리 이미지에서 전체 설치 환경을 테스트하려고 합니다. 테스트가 완료되면 VM을 삭제할 수 있습니다.

VM을 만드는 명령을 사용해 보겠습니다.

Azure PowerShell을 사용하여 Linux VM 만들기

Azure 샌드박스를 사용하고 있으므로 리소스 그룹을 만들 필요가 없습니다. 대신 기존 샌드박스 리소스 그룹 [샌드박스 리소스 그룹 이름]을 사용합니다. 위치 제한에 유의해야 합니다.

Azure PowerShell을 사용하여 새 Azure VM을 만드는 방법은 다음과 같습니다.

  1. 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 액세스를 위해 포트가 22OpenPorts 매개 변수를 추가합니다.

    • 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)를 사용합니다.

  2. 자격 증명 입력:

    메시지가 표시되면 지침에 따라 사용자 이름과 암호를 입력합니다. 암호는 길이가 12~123자여야 하며 소문자, 대문자, 숫자, 특수 문자(정규식 일치 [\W_]) 등 네 가지 복잡성 요구 사항 중 세 가지를 충족해야 합니다. 자세한 내용은 Linux VM FAQ를 참조하세요.

  3. VM 만들기를 기다립니다.

    VM 만들기 프로세스를 완료하는 데 몇 분 정도 걸립니다.

  4. VM을 쿼리합니다.

    완료되면 VM을 쿼리하고 VM 개체를 변수($vm)에 할당합니다.

    $vm = Get-AzVM -Name testvm-eus-01 -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
    
  5. 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}
    ...
    
  6. VM 속성을 검사합니다.

    멤버 액세스 연산자(.)를 통해 복합 개체를 검사할 수 있습니다. 예를 들어 HardwareProfile 섹션과 연결된 VMSize 개체의 속성을 보려면 다음 명령을 실행합니다.

    $vm.HardwareProfile
    

    또는 디스크 중 하나에 대한 정보를 가져오려면 다음 명령을 실행합니다.

    $vm.StorageProfile.OsDisk
    
  7. 사용 가능한 VM 크기를 가져옵니다.

    VM 개체를 다른 cmdlet에 전달하여 사용 가능한 크기를 가져옵니다.

    $vm | Get-AzVMSize
    
  8. 공용 IP 주소 가져오기:

    VM에 연결하기 위한 공용 IP 주소를 검색하고 이를 변수에 저장합니다.

    $ip = Get-AzPublicIpAddress -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name testvm-eus-01
    
  9. VM에 연결:

    변수의 IP 주소를 사용하여 SSH로 VM에 연결합니다. 예를 들어, 사용자 이름이 bob인 경우 다음 명령을 사용합니다.

    ssh bob@$($ip.IpAddress)
    

    exit를 입력하여 로그아웃합니다.

VM 삭제

더 많은 명령을 시도하려면 VM을 삭제해 보겠습니다. 다음 단계를 수행합니다.

  1. VM 종료:

    다음 명령을 실행합니다.

    Stop-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName
    

    계속할지 묻는 메시지가 나타나면 Y를 입력하고 Enter 키를 누릅니다.

  2. VM을 삭제합니다.

    VM이 중지되면 Remove-AzVM cmdlet을 실행하여 삭제합니다.

    Remove-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName
    

    계속할지 묻는 메시지가 나타나면 Y를 입력하고 Enter 키를 누릅니다.

  3. 리소스 그룹의 모든 리소스를 나열합니다.

    리소스 그룹의 모든 리소스를 나열하려면 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만 삭제합니다. 다른 리소스는 정리하지 않습니다. 수동으로 정리하려면 다음 단계를 따릅니다.

  4. 네트워크 인터페이스를 삭제합니다.

    Get-AzNetworkInterface -ResourceGroupName $vm.ResourceGroupName -Name $vm.Name |
        Remove-AzNetworkInterface
    

    계속할지 묻는 메시지가 나타나면 Y를 입력하고 Enter 키를 누릅니다.

  5. 네트워크 보안 그룹을 삭제합니다.

    Get-AzNetworkSecurityGroup -ResourceGroupName $vm.ResourceGroupName |
        Remove-AzNetworkSecurityGroup
    

    계속할지 묻는 메시지가 나타나면 Y를 입력하고 Enter 키를 누릅니다.

  6. 공용 IP 주소를 삭제합니다.

    Get-AzPublicIpAddress -ResourceGroupName $vm.ResourceGroupName |
        Remove-AzPublicIpAddress
    

    계속할지 묻는 메시지가 나타나면 Y를 입력하고 Enter 키를 누릅니다.

  7. 가상 네트워크 삭제:

    Get-AzVirtualNetwork -ResourceGroupName $vm.ResourceGroupName |
        Remove-AzVirtualNetwork
    

    계속할지 묻는 메시지가 나타나면 Y를 입력하고 Enter 키를 누릅니다.

  8. 관리되는 OS 디스크를 삭제합니다.

    Get-AzDisk -ResourceGroupName $vm.ResourceGroupName -DiskName $vm.StorageProfile.OSDisk.Name |
        Remove-AzDisk
    

    계속할지 묻는 메시지가 나타나면 Y를 입력하고 Enter 키를 누릅니다.

  9. 모든 리소스가 제거되었는지 확인합니다.

    리소스 그룹을 확인하여 모든 리소스가 제거되었는지 확인합니다.

    Get-AzResource -ResourceGroupName $vm.ResourceGroupName | 
        Select-Object -Property Name, ResourceType, ResourceGroupName
    

이러한 명령을 대화형으로 실행하는 동안 더 나은 방식은 PowerShell 스크립트를 작성하는 것입니다. 스크립트를 사용하면 나중에 VM을 만들거나 삭제하기 위한 논리를 재사용할 수 있습니다.

다음으로 PowerShell 스크립트를 사용하여 이러한 작업을 자동화하는 방법을 살펴보겠습니다.