연습 - Azure CLI과(와) 상호작용하는 방식으로 Azure 리소스 만들기

완료됨

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

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

비고

이 연습은 선택 사항입니다. 이 연습을 완료하려면 시작하기 전에 Azure 구독을 만들어야 합니다. Azure 계정이 없거나 현재 계정을 만들지 않으려는 경우 제공되는 정보를 이해할 수 있도록 지침을 읽을 수 있습니다.

비고

리소스 그룹을 사용하여 이 연습의 단계를 완료해야 합니다. 이미 만든 리소스 그룹을 사용하거나 이 연습을 위해 특별히 새 리소스 그룹을 만들 수 있습니다. 새 리소스 그룹을 만들도록 선택하면 연습을 완료할 때 만든 리소스를 더 쉽게 정리할 수 있습니다. 기존 리소스 그룹이 없거나 이 연습을 위해 특별히 새 리소스 그룹을 만들려는 경우 Azure Portal 및 Azure Resource Manager를 사용하여 리소스 그룹을 관리하여 Azure Portal을 사용하여 리소스 그룹을 만들 거나 Azure CLI를 사용하여 Azure CLI를 사용하여 Azure 리소스 그룹 관리 의 단계를 수행하여 Azure CLI를 사용하여 리소스 그룹을 만들 수 있습니다.

연습 - Azure CLI를 사용하여 Linux VM 생성하기

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

  1. Azure Portal을 통해 또는 많은 Azure CLI 코드 블록의 오른쪽 위 모서리에 있는 Open Cloud Shell 단추를 사용하여 Azure Cloud Shell을 엽니다.

  2. az vm create 명령 기능을 사용하여 VM을 생성합니다.

    • 리소스 그룹의 이름을 지정합니다. 다음 예제의 myResourceGroupName 을 기존 리소스 그룹의 이름 또는 이 연습에 대해 만든 리소스 그룹의 이름으로 바꿉니다.
    • 조직의 작명 기준에 따라 VM의 이름을 지정합니다.
    • 사용 가능한 Azure 위치 목록에서 가까운 위치를 선택합니다.
    • Linux 이미지 사용: Ubuntu2204.
    • 조직의 작명 기준에 따라 관리자의 사용자 이름을 할당합니다.
    #!/bin/bash
    
    # Create variables with values of your choice.
    rgName="myResourceGroupName"
    vmName="msdocs-vm-01"
    vmLocation="westus"
    vmImage="Ubuntu2204"
    vmAdminUserName="myAzureUserName"
    
    # Create the VM
    az vm create \
      --resource-group $rgName \
      --name $vmName \
      --location $vmLocation \
      --image $vmImage \
      --public-ip-sku Standard \
      --admin-username $vmAdminUserName \
      --generate-ssh-keys
    

    방금 복사 버튼을 사용하여 행으로 연속되어 있는 문자가 제거된 것을 확인하셨나요? 이 동작은 의도된 것입니다. Azure CLI는 행으로 연속된 문자 등을 포함한 다른 여러 환경에서도 실행될 수 있으므로, 복사 버튼으로 이를 제거할 수 있습니다. 서식이 지정된 스크립트를 복사하려면 마우스를 사용하여 코드 블럭의 내용을 선택하고 복사합니다.

    Azure Cloud Shell에 내용을 붙여 넣으려면, Cloud Shell 터미널에서 새로운 줄을 마우스 오른쪽으로 클릭 후 붙여넣기(&Shift+Insert)를 누릅니다(macOS의 경우 ⌘+V)를 사용합니다.

    스크립트가 올바르게 복사되지 않았고 Cloud Shell 터미널이 추가 입력을 기다리는 경우 Ctrl + Z 를 사용하여 프롬프트로 돌아가서 다시 시도하십시오.

  3. Linux VM이 생성될 때까지 기다립니다.

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

  4. VM 관련 정보 가져오기

    완료 후 Azure CLI는 VM 정보를 JSON 형식으로 반환합니다. az vm listaz vm show 명령을 사용하여 VM에 대한 특정 정보를 가져옵니다. 다음 몇 가지 예를 참조하세요.

    이러한 스크립트 중 일부는 이전 단계에서 저장된 변수 이름과 변수값을 사용합니다.

    테이블 형식의 모든 VM 목록을 가져옵니다.

    az vm list --output table
    

    JSON 형식의 단일 VM에 대한 정보를 가져옵니다.

    이 결과 중 일부는 새로운 VM이 생성된 후에 나타납니다. 그러나 스크립트에서 참조할 중첩 속성명을 알아내려면 추가 정보로 돌아가는 것을 추천합니다. 속성 이름은 대/소문자를 구분합니다.

    az vm show --resource-group $rgName --name $vmName
    

    VM 속성에 대한 정보를 가져옵니다.

    # Get the time the VM was created
    az vm show --resource-group $rgName --name $vmName --query "timeCreated"
    
    # Get the OS disk storage account type
    az vm show --resource-group $rgName --name $vmName --query "storageProfile.osDisk.managedDisk.storageAccountType"
    

    VM의 속성을 변수에 저장합니다.

    Azure CLI에서는 여러 출력 유형을 사용할 수 있습니다. JSON이 기본값이지만 변수에 값을 저장할 때 --output tsv을 사용하여 추가 서식을 제거합니다.

    #!/bin/bash
    # Store the VM id
    vmID=$(az vm show --resource-group $rgName --name $vmName --query id --output tsv)
    echo $vmID
    
    # Store the public IP address
    publicIP=$(az vm list-ip-addresses \
        --resource-group $rgName \
        --name $vmName \
        --query "[].virtualMachine.network.publicIpAddresses[0].ipAddress" --output tsv)
    echo $publicIP
    
  5. VM에 연결합니다.

    #!/bin/bash
    az ssh vm --private-key-file \path\to\private\key \
        --resource-group $rgName \
        --name $vmName \
        --local-user $vmAdminUserName
    

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

더 많은 VM 옵션에 대해 알아보세요

명령줄에서 Azure 리소스를 사용할 때는 Azure Portal을 사용하지 않습니다. 그러면 속성 옵션의 선택 목록을 제공하는 경우가 많습니다. 예를 들어, 사용 가능한 위치 및 VM 크기 목록이 있습니다. Azure CLI의 여러 자체 명령 그룹에 있는 몇몇 명령을 통해 이러한 정보를 확인할 수 있습니다. 다음은 VM에 대한 몇 가지 예입니다.

Azure CLI --output table 형식은 사용 가능한 정보의 100%를 반환하지는 않지만, 보통 대용량의 명령 결과를 읽기 쉽게 변환합니다. --query 매개 변수를 사용하여 가장 관심 있는 정보를 지정합니다.

  1. 위치에 맞는 VM 크기를 선택합니다.

    az vm list-sizes --location westus --output table
    
  2. 위치에 맞는 SKU를 선택합니다.

    --location 선택한 항목에 따라 Azure CLI가 전체 SKU 목록을 반환하는 데 1~2분 정도 소요될 수 있습니다.

    # virtual machines
    az vm list-skus --location westus --resource-type virtualMachines --output table
    
    # disks
    az vm list-skus --location westus --resource-type disks --output table
    
  3. 기존 VM에 맞는 크기 조정 옵션을 선택합니다.

    az vm list-vm-resize-options --resource-group $rgName --name $vmName --output table
    
  4. 리소스 그룹의 모든 VM에 대한 세부 정보를 표시합니다.

    로컬 환경에서 작업하는 경우나 구독에 다량의 VM이 있는 경우, 필터 조건에 맞는 VM을 쿼리합니다.

    #!/bin/bash
    # details of all VMs in a specified resource group
    az vm show --show-details --ids $(az vm list --resource-group $rgName --query "[].id" -o tsv)
    
    # list of all VMs created in the last 7 days
    createDate=$(date +%F -d "-7days")
    az vm list --resource-group $rgName \
            --query "[?timeCreated >='$createDate'].{Name:name, admin:osProfile.adminUsername, DiskSize:storageProfile.osDisk.diskSizeGb}" \
            --output table
    
    # list all VMs whose disks are of a certain type
    # first get a list of the disk types or organization is using
    az vm list --resource-group $rgName --query "[].{Name:name, osDiskSize:storageProfile.osDisk.diskSizeGb, managedDiskTypes:storageProfile.osDisk.managedDisk.storageAccountType}" --output table
    
    diskType="Premium_LRS"
    az vm list --resource-group $rgName \
            --query "[?storageProfile.osDisk.managedDisk.storageAccountType =='$diskType'].{Name:name, admin:osProfile.adminUsername, osDiskSize:storageProfile.osDisk.diskSizeGb, CreatedOn:timeCreated, vmID:id}" \
            --output table
    

VM 중지 또는 삭제

  1. VM 종료:

    VM 요금이 계속 청구되더라도 실행 중인 VM의 전원을 끄거나 중지할 수 있습니다.

    az vm stop --resource-group $rgName --name $vmName
    

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

  2. VM 할당 해제:

    중지된 VM에 대해 요금이 청구되는 것을 막기 위해 VM을 할당 해제합니다. 할당 해제된 VM에는 더 이상 할당되지 않는 리소스가 포함되어 있습니다(더 이상 요금이 청구되지 않습니다). VM 상태가 '중지'에서 '중지(할당 해제)'로 변경됩니다.

    az vm deallocate --resource-group $rgName --name $vmName
    
  3. VM 삭제:

    VM이 중지되면 az vm delete 명령을 실행하여 이를 삭제합니다.

    az vm delete --resource-group $rgName --name $vmName
    

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

이러한 명령을 상호작용 방식으로 실행하는 것보다 Azure CLI 스크립트를 작성하는 것이 훨씬 수월합니다. 스크립트를 활용하면 향후 VM을 생성하거나 삭제하는 로직을 재사용할 수 있습니다.

다음 단원에서는 Azure CLI 스크립트를 사용하여 이러한 작업을 자동화해보도록 하겠습니다.