다음을 통해 공유


자습서: Azure CLI로 Linux VM 만들기 및 관리

적용 대상: ✔️ Linux VM ✔️ 유연한 확장 집합

Azure Virtual Machines는 완전하게 구성할 수 있고 유연한 컴퓨팅 환경을 제공합니다. 이 자습서에서는 VM 크기 선택, VM 이미지 선택 및 VM 배포 등 기본적인 Azure Virtual Machines 배포 항목에 대해 설명합니다. 당신은 다음을 배우게 됩니다:

  • VM 만들기 및 연결
  • VM 이미지 선택 및 사용
  • 특정 VM 크기 보기 및 사용
  • VM 크기 조정
  • VM 상태 보기 및 이해

이 자습서에서는 지속적으로 최신 버전으로 업데이트되는 Azure Cloud Shell 내의 CLI를 사용합니다.

CLI를 로컬로 설치하여 사용하도록 선택한 경우 이 자습서에서 Azure CLI 버전 2.0.30 이상을 실행해야 합니다. az --version을 실행하여 버전을 찾습니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.

리소스 그룹 만들기

아래에서 환경 변수를 선언합니다. 각 배포에 대해 고유해야 하는 리소스 이름에 임의 접미사가 추가됩니다.

export RANDOM_SUFFIX=$(openssl rand -hex 3)
export REGION="eastus2"
export MY_RESOURCE_GROUP_NAME="myResourceGroupVM$RANDOM_SUFFIX"
az group create --name $MY_RESOURCE_GROUP_NAME --location $REGION

결과:

{
  "id": "/subscriptions/xxxxx-xxxxx-xxxxx-xxxxx/resourceGroups/myResourceGroupVMxxx",
  "location": "eastus2",
  "name": "myResourceGroupVMxxx",
  "properties": {
    "provisioningState": "Succeeded"
  }
}

Azure 리소스 그룹은 Azure 리소스가 배포 및 관리되는 논리적 컨테이너입니다. 가상 머신보다 먼저 리소스 그룹을 만들어야 합니다. 이 예제에서는 eastus2 지역에 myResourceGroupVM이라는 리소스 그룹을 만듭니다.

리소스 그룹은 VM을 만들거나 수정할 때 지정되며 이 자습서 전체에서 확인할 수 있습니다.

가상 머신 만들기

가상 머신을 만들 때 운영 체제 이미지, 디스크 크기 조정 및 관리 자격 증명 등의 몇 가지 옵션을 사용할 수 있습니다. 다음 예제에서는 SUSE SLES(Linux Enterprise Server)를 실행하는 myVM이라는 VM을 만듭니다. azureuser라는 사용자 계정이 VM에 만들어지고 기본 키 위치(~/.ssh)에 없는 경우 SSH 키가 생성됩니다.

export MY_VM_NAME="myVM$RANDOM_SUFFIX"
az vm create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --name $MY_VM_NAME \
    --image SuseSles15SP5 \
    --public-ip-sku Standard \
    --admin-username azureuser \
    --generate-ssh-keys

VM을 만드는 데 몇 분이 걸릴 수 있습니다. VM이 만들어지면 Azure CLI에서 VM에 대한 정보를 출력합니다. publicIpAddress이 주소를 사용하여 가상 머신에 액세스할 수 있습니다.

{
  "fqdns": "",
  "id": "/subscriptions/xxxxx-xxxxx-xxxxx-xxxxx/resourceGroups/myResourceGroupVMxxx/providers/Microsoft.Compute/virtualMachines/myVMxxx",
  "location": "eastus2",
  "macAddress": "00-0D-3A-23-9A-49",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.4",
  "publicIpAddress": "52.174.34.95",
  "resourceGroup": "myResourceGroupVMxxx"
}

VM에 연결

이제 Azure Cloud Shell에서 또는 로컬 컴퓨터에서 SSH를 사용하여 VM에 연결할 수 있습니다. 예제 IP 주소를 이전 단계에서 메모한 publicIpAddress로 바꿉니다.

VM에 연결하려면 먼저 Azure CLI를 사용하여 공용 IP 주소를 검색합니다. 다음 명령을 실행하여 IP 주소를 변수에 저장합니다. export IP_ADDRESS=$(az vm show --show-details --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_VM_NAME --query publicIps --output tsv)

IP 주소가 있으면 SSH를 사용하여 VM에 연결합니다. 다음 명령은 계정 및 검색된 IP 주소를 사용하여 azureuser VM에 연결합니다. ssh -o StrictHostKeyChecking=no azureuser@$IP_ADDRESS

VM 이미지 이해

Azure Marketplace에는 VM을 만드는 데 사용할 수 있는 여러 VM 이미지가 포함되어 있습니다. 이전 단계에서는 SUSE 이미지를 사용하여 가상 머신을 만들었습니다. 이 단계에서는 Azure CLI를 사용하여 마켓플레이스에서 Ubuntu 이미지를 검색한 다음 두 번째 가상 머신을 배포하는 데 사용합니다.

가장 일반적으로 사용되는 이미지 목록을 보려면 az vm image list 명령을 사용하세요.

az vm image list --output table

명령 출력은 Azure에서 가장 인기 있는 VM 이미지를 반환합니다.

Architecture    Offer                         Publisher               Sku                                 Urn                                                                             UrnAlias                 Version
--------------  ----------------------------  ----------------------  ----------------------------------  ------------------------------------------------------------------------------  -----------------------  ---------
x64             debian-10                     Debian                  10                                  Debian:debian-10:10:latest                                                      Debian                   latest
x64             flatcar-container-linux-free  kinvolk                 stable                              kinvolk:flatcar-container-linux-free:stable:latest                              Flatcar                  latest
x64             opensuse-leap-15-3            SUSE                    gen2                                SUSE:opensuse-leap-15-3:gen2:latest                                             openSUSE-Leap            latest
x64             RHEL                          RedHat                  7-LVM                               RedHat:RHEL:7-LVM:latest                                                        RHEL                     latest
x64             sles-15-sp3                   SUSE                    gen2                                SUSE:sles-15-sp3:gen2:latest                                                    SLES                     latest
x64             0001-com-ubuntu-server-jammy  Canonical               18.04-LTS                           Canonical:UbuntuServer:18.04-LTS:latest                                         UbuntuLTS                latest
x64             WindowsServer                 MicrosoftWindowsServer  2022-Datacenter                     MicrosoftWindowsServer:WindowsServer:2022-Datacenter:latest                     Win2022Datacenter        latest
x64             WindowsServer                 MicrosoftWindowsServer  2022-datacenter-azure-edition-core  MicrosoftWindowsServer:WindowsServer:2022-datacenter-azure-edition-core:latest  Win2022AzureEditionCore  latest
x64             WindowsServer                 MicrosoftWindowsServer  2019-Datacenter                     MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest                     Win2019Datacenter        latest
x64             WindowsServer                 MicrosoftWindowsServer  2016-Datacenter                     MicrosoftWindowsServer:WindowsServer:2016-Datacenter:latest                     Win2016Datacenter        latest
x64             WindowsServer                 MicrosoftWindowsServer  2012-R2-Datacenter                  MicrosoftWindowsServer:WindowsServer:2012-R2-Datacenter:latest                  Win2012R2Datacenter      latest
x64             WindowsServer                 MicrosoftWindowsServer  2012-Datacenter                     MicrosoftWindowsServer:WindowsServer:2012-Datacenter:latest                     Win2012Datacenter        latest
x64             WindowsServer                 MicrosoftWindowsServer  2008-R2-SP1                         MicrosoftWindowsServer:WindowsServer:2008-R2-SP1:latest                         Win2008R2SP1             latest

--all 매개 변수를 추가하면 전체 목록을 볼 수 있습니다. 이미지 목록은 --publisher 또는 –-offer로 필터링할 수도 있습니다. 이 예제에서는 0001-com-ubuntu-server-jammy와 일치하는 제품이 있는 OpenLogic에서 게시한 모든 이미지에 대해 목록이 필터링됩니다.

az vm image list --offer 0001-com-ubuntu-server-jammy --publisher Canonical --all --output table

부분 출력 예제:

Architecture    Offer                              Publisher    Sku              Urn                                                                       Version
--------------  ---------------------------------  -----------  ---------------  ------------------------------------------------------------------------  ---------------
x64             0001-com-ubuntu-server-jammy       Canonical    22_04-lts        Canonical:0001-com-ubuntu-server-jammy:22_04-lts:22.04.202204200          22.04.202204200
x64             0001-com-ubuntu-server-jammy       Canonical    22_04-lts        Canonical:0001-com-ubuntu-server-jammy:22_04-lts:22.04.202205060          22.04.202205060
x64             0001-com-ubuntu-server-jammy       Canonical    22_04-lts        Canonical:0001-com-ubuntu-server-jammy:22_04-lts:22.04.202205280          22.04.202205280
x64             0001-com-ubuntu-server-jammy       Canonical    22_04-lts        Canonical:0001-com-ubuntu-server-jammy:22_04-lts:22.04.202206040          22.04.202206040
x64             0001-com-ubuntu-server-jammy       Canonical    22_04-lts        Canonical:0001-com-ubuntu-server-jammy:22_04-lts:22.04.202206090          22.04.202206090
x64             0001-com-ubuntu-server-jammy       Canonical    22_04-lts        Canonical:0001-com-ubuntu-server-jammy:22_04-lts:22.04.202206160          22.04.202206160
x64             0001-com-ubuntu-server-jammy       Canonical    22_04-lts        Canonical:0001-com-ubuntu-server-jammy:22_04-lts:22.04.202206220          22.04.202206220
x64             0001-com-ubuntu-server-jammy       Canonical    22_04-lts        Canonical:0001-com-ubuntu-server-jammy:22_04-lts:22.04.202207060          22.04.202207060

비고

Canonical은 최신 버전에 사용하는 제품 이름을 변경했습니다. Ubuntu 20.04 이전의 제품 이름은 UbuntuServer입니다. Ubuntu 20.04의 경우 제품 이름은 0001-com-ubuntu-server-focal이며 Ubuntu 22.04의 경우 제품 이름은 0001-com-ubuntu-server-jammy입니다.

특정 이미지를 사용하여 VM을 배포하려면 이미지를 식별하기 위한 게시자, 제품, SKU 및 버전 번호(선택 사항)로 구성된 Urn 열의 값을 적어 둡니다. 이미지를 지정하면 이미지 버전 번호는 최신 버전의 배포를 선택하도록 latest로 대체될 수 있습니다. 이 예제에서는 --image 매개 변수를 사용하여 Ubuntu 22.04의 최신 버전을 지정합니다.

export MY_VM2_NAME="myVM2$RANDOM_SUFFIX"
az vm create --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_VM2_NAME --image Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest --generate-ssh-keys

VM 크기 이해

가상 머신 크기에 따라 CPU, GPU, 메모리 등 가상 머신에 사용할 수 있는 컴퓨팅 리소스의 양이 결정됩니다. 가상 머신은 예상되는 워크로드에 맞게 적절히 크기 조정되어야 합니다. 워크로드가 증가할 경우 기존 가상 머신의 크기를 조정할 수 있습니다.

VM 크기

다음 표에서는 크기를 사용 사례로 분류합니다.

유형 설명
범용 CPU 대 메모리 비율이 적당합니다. 개발/테스트와 소규모에서 중간 정도의 애플리케이션 및 데이터 솔루션에 적합합니다.
컴퓨팅 최적화 CPU 대 메모리 비율이 높습니다. 트래픽이 중간 정도인 애플리케이션, 네트워크 어플라이언스 및 일괄 처리 프로세스에 적합합니다.
메모리 최적화됨 메모리 대 코어 비율이 높습니다. 관계형 데이터베이스, 중대형 캐시 및 메모리 내 분석에 적합합니다.
스토리지 최적화 높은 디스크 처리량 및 IO. 빅 데이터, SQL, NoSQL 데이터베이스에 적합
GPU 대량의 그래픽 렌더링 및 비디오 편집에 적합한 전문 VM입니다.
고성능 당사의 가장 강력한 CPU VM으로, 필요한 경우 처리량이 높은 네트워크 인터페이스(RDMA)도 제공합니다.

사용 가능한 VM 크기 찾기

특정 지역에서 사용할 수 있는 VM 크기의 목록을 보려면 az vm list-sizes 명령을 사용합니다.

az vm list-sizes --location $REGION --output table

부분 출력 예제:

  MaxDataDiskCount    MemoryInMb  Name                      NumberOfCores    OsDiskSizeInMb    ResourceDiskSizeInMb
------------------  ------------  ----------------------  ---------------  ----------------  ----------------------
4                   8192          Standard_D2ds_v4           2                1047552           76800
8                   16384         Standard_D4ds_v4           4                1047552           153600
16                  32768         Standard_D8ds_v4           8                1047552           307200
32                  65536         Standard_D16ds_v4          16               1047552           614400
32                  131072        Standard_D32ds_v4          32               1047552           1228800
32                  196608        Standard_D48ds_v4          48               1047552           1843200
32                  262144        Standard_D64ds_v4          64               1047552           2457600
4                   8192          Standard_D2ds_v5           2                1047552           76800
8                   16384         Standard_D4ds_v5           4                1047552           153600
16                  32768         Standard_D8ds_v5           8                1047552           307200
32                  65536         Standard_D16ds_v5          16               1047552           614400
32                  131072        Standard_D32ds_v5          32               1047552           1228800
32                  196608        Standard_D48ds_v5          48               1047552           1843200
32                  262144        Standard_D64ds_v5          64               1047552           2457600
32                  393216        Standard_D96ds_v5          96               1047552           3686400

특정 크기로 VM 만들기

이전 VM 만들기 예제에서는 크기가 제공되지 않았으므로 기본 크기가 사용되었습니다. VM 크기는 만들 때 az vm create--size 매개 변수를 사용하여 선택할 수 있습니다.

export MY_VM3_NAME="myVM3$RANDOM_SUFFIX"
az vm create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --name $MY_VM3_NAME \
    --image SuseSles15SP5 \
    --size Standard_D2ds_v4  \
    --generate-ssh-keys

VM 크기 조정

VM을 배포한 후에 크기를 조정하여 리소스 할당을 늘리거나 줄일 수 있습니다. az vm show를 사용하여 VM의 현재 크기를 볼 수 있습니다.

az vm show --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_VM_NAME --query hardwareProfile.vmSize

VM의 크기를 조정하기 전에 원하는 크기를 현재 Azure 클러스터에서 사용할 수 있는지 확인합니다. az vm list-vm-resize-options 명령은 크기 목록을 반환합니다.

az vm list-vm-resize-options --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_VM_NAME --query [].name

원하는 크기를 사용할 수 있는 경우 VM은 작동 중에 다시 부팅되지만 전원이 켜진 상태에서 크기를 조정할 수 있습니다. az vm resize 명령을 사용하여 크기 조정을 수행합니다.

az vm resize --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_VM_NAME --size Standard_D4s_v3

현재 클러스터에서 원하는 크기를 사용할 수 없는 경우 크기 조정 작업이 발생하기 전에 VM의 할당을 취소해야 합니다. az vm deallocate 명령을 사용하여 VM을 중지하고 할당을 취소합니다. VM의 전원이 다시 켜지면 임시 디스크의 모든 데이터가 제거될 수 있습니다. 고정 IP 주소를 사용하지 않는 한 공용 IP 주소도 변경됩니다. 할당이 취소되면 크기가 조정될 수 있습니다.

크기를 조정한 후 VM을 시작할 수 있습니다.

az vm start --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_VM_NAME

VM 전원 상태

Azure VM의 전원 상태는 여러 상태 중 하나일 수 있습니다. 이 상태는 하이퍼바이저의 관점에서 VM의 현재 상태를 나타냅니다.

전원 상태

전원 상태 설명
시작 중 가상 머신이 시작되고 있음을 나타냅니다.
실행 중 가상 머신이 실행되고 있음을 나타냅니다.
중지 중 가상 머신이 중지되고 있음을 나타냅니다.
중지됨 가상 머신이 중지되었음을 나타냅니다. 중지 상태의 가상 머신에도 여전히 컴퓨팅 요금이 발생됩니다.
할당 취소 중 가상 머신의 할당이 취소되고 있음을 나타냅니다.
할당 취소됨 가상 머신이 하이퍼바이저에서 제거되었지만 제어 영역에서 계속 사용할 수 있음을 나타냅니다. 할당 취소됨 상태의 가상 머신에는 컴퓨팅 요금이 발생하지 않습니다.
- 가상 머신의 전원 상태가 알 수 없음을 나타냅니다.

전원 상태 찾기

특정 VM의 상태를 검색하려면 az vm get-instance-view 명령을 사용합니다. 가상 머신 및 리소스 그룹에 대한 올바른 이름을 지정해야 합니다.

az vm get-instance-view \
    --name $MY_VM_NAME \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --query instanceView.statuses[1] --output table

출력:

Code                Level    DisplayStatus
------------------  -------  ---------------
PowerState/running  Info     VM running

구독에 있는 모든 VM의 전원 상태를 검색하려면 매개 변수 statusOnlytrue로 설정된 Virtual Machines - 모든 API 목록을 사용합니다.

관리 작업

가상 머신의 수명 주기 동안 가상 머신 시작, 중지 또는 삭제 등의 관리 작업을 실행하려고 할 수 있습니다. 또한 반복되는 작업이나 복잡한 작업을 자동화하는 스크립트를 만들 수 있습니다. Azure CLI를 사용하여 명령줄이나 스크립트에서 여러 가지 일반적인 관리 작업을 실행할 수 있습니다.

IP 주소 가져오기

이 명령은 가상 머신의 개인 및 공용 IP 주소를 반환합니다.

az vm list-ip-addresses --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_VM_NAME --output table

가상 컴퓨터 중지

az vm stop --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_VM_NAME

가상 머신 시작

az vm start --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_VM_NAME

VM 리소스 삭제

VM을 삭제하는 방법에 따라 네트워킹 및 디스크 리소스가 아닌 VM 리소스만 삭제할 수 있습니다. VM을 삭제할 때 다른 리소스를 삭제하도록 기본 동작을 변경할 수 있습니다. 자세한 내용은 VM 및 연결된 리소스 삭제를 참조하세요.

리소스 그룹을 삭제하면 VM, 가상 네트워크, 디스크와 같은 리소스 그룹의 모든 리소스도 삭제됩니다. --no-wait 매개 변수는 작업이 완료될 때까지 대기하지 않고 프롬프트로 제어를 반환합니다. --yes 매개 변수는 작업을 수행하는 추가 프롬프트 없이 리소스를 삭제할 것인지 확인합니다.

다음 단계

이 자습서에서는 다음 방법과 같이 기본 VM을 만들고 관리하는 방법에 대해 알아보았습니다.

  • VM 만들기 및 연결
  • VM 이미지 선택 및 사용
  • 특정 VM 크기 보기 및 사용
  • VM 크기 조정
  • VM 상태 보기 및 이해

VM 디스크에 대해 자세히 알아보려면 다음 자습서로 이동합니다.