VM(가상 머신) 만들기 - Azure CLI | Microsoft Docs
이 자습서에서는 Azure CLI에서 가상 머신을 만드는 것과 관련된 모든 단계를 학습합니다. 또한 이 자습서에는 출력 쿼리, Azure 리소스 재사용 및 리소스 정리가 포함됩니다.
이 자습서는 Azure Cloud Shell을 통해 제공되는 대화식 환경을 사용해서 완료할 수 있으며, 로컬로 CLI 설치를 수행할 수도 있습니다.
Ctrl+Shift+V(macOS의 경우 Cmd+Shift+V)를 사용하여 Azure Cloud Shell에 자습서 텍스트를 붙여넣습니다.
로그인
로컬 설치된 CLI를 사용할 경우, 다른 단계를 수행하기 전에 로그인해야 합니다.
az login
터미널에 표시된 단계를 수행하여 인증 프로세스를 완료하십시오.
리소스 그룹 만들기
Azure에서 모든 리소스는 리소스 관리 그룹에 할당되어 있습니다. 리소스 그룹은 총체적으로 작업을 쉽게 수행할 수 있게 해주는 논리적인 리소스 그룹을 제공합니다. 이 자습서에서 생성되는 모든 리소스는 이름이 TutorialResources
인 단일 그룹에 포함됩니다.
az group create --name TutorialResources --location eastus
가상 머신 만들기
Azure에서 가상 머신은 여러 종속성을 갖습니다. CLI는 사용자가 지정하는 명령줄 인수를 기준으로 이러한 리소스를 만듭니다.
Ubuntu를 실행하는 새로운 가상 머신을 만듭니다. 이 가상 머신은 로그인을 위해 SSH 인증을 사용합니다.
az vm create --resource-group TutorialResources \
--name TutorialVM1 \
--image Ubuntu2204 \
--generate-ssh-keys \
--output json \
--public-ip-sku Standard
--verbose
참고
이름이 id_rsa
인 SSH 키를 사용할 수 있는 경우, 새로운 키를 생성하는 대신 이 키가 인증에 사용됩니다.
가상 머신이 생성될 때, 사용된 로컬 값과 --verbose
옵션으로 인해 Azure 리소스가 생성되는 것을 볼 수 있습니다.
가상 머신이 준비되면 공용 IP 주소를 포함하여 Azure 서비스에서 JSON이 반환됩니다.
{
"fqdns": "",
"id": "...",
"location": "eastus",
"macAddress": "...",
"powerState": "VM running",
"privateIpAddress": "...",
"publicIpAddress": <PUBLIC_IP_ADDRESS>,
"resourceGroup": "TutorialResources",
"zones": ""
}
SSH로 연결하여 가상 머신이 실행되고 있는지 확인하십시오.
ssh <PUBLIC_IP_ADDRESS>
계속해서 가상 머신에서 로그아웃합니다.
가상 머신이 시작된 다음에는 여러 방법을 사용해서 이 IP 주소를 가져올 수 있습니다. 다음 섹션에서는 가상 머신에 대한 세부 정보를 가져오고 이를 필터링하는 방법을 살펴봅니다.
쿼리를 사용하여 가상 머신 정보 가져오기
이제 가상 머신이 생성되었으므로, 이에 대한 세부 정보를 검색할 수 있습니다. 리소스에서 정보를 가져오기 위한 일반적인 명령은 show
입니다.
az vm show --name TutorialVM1 --resource-group TutorialResources
시각적으로 식별하기 어려울 수 있지만, 많은 정보가 표시됩니다. 반환된 JSON에는 인증, 네트워크 인터페이스, 스토리지 등이 포함됩니다. 포함된 정보 중 가장 중요한 것은 가상 머신이 연결된 리소스에 대한 Azure 개체 ID입니다. 개체 ID를 사용하면 이러한 리소스에 직접 액세스하여 가상 머신의 구성 및 기능에 대한 자세한 정보를 가져올 수 있습니다.
원하는 개체 ID를 추출하기 위해서는 --query
인수가 사용됩니다. 쿼리는 JMESPath 쿼리 언어로 작성됩니다. 먼저 NIC(네트워크 인터페이스 컨트롤러) 개체 ID를 가져옵니다.
az vm show --name TutorialVM1 \
--resource-group TutorialResources \
--query 'networkProfile.networkInterfaces[].id' \
--output tsv
이제 쿼리를 추가하여 많은 작업을 수행할 수 있습니다. 쿼리의 각 부분은 출력 JSON의 키를 참조하거나 JMESPath 연산자입니다.
networkProfile
은(는) 하위 키로networkInterfaces
을(를) 포함하는 최상위 JSON 키입니다. JSON 값이 딕셔너리인 경우, 해당 키는.
연산자를 사용하여 부모 키에서 참조됩니다.networkInterfaces
값은 배열이므로,[]
연산자를 사용하여 평면화됩니다. 이 연산자는 각 배열 요소에서 쿼리의 나머지를 실행합니다. 이 경우 모든 배열 요소의id
값을 가져옵니다.
출력 형식 tsv
(탭으로 구분된 값)은 결과 데이터 및 탭과 줄 바꿈으로만 구성된 공백만 포함하도록 보장됩니다.
반환 값은 단일 기본 문자열이므로, 환경 변수에 직접 할당해도 안전합니다.
계속해서 이제 환경 변수에 NIC 개체 ID를 할당합니다.
NIC_ID=$(az vm show -n TutorialVM1 -g TutorialResources \
--query 'networkProfile.networkInterfaces[].id' \
-o tsv)
이 예제에서는 짧은 인수 사용 예를 보여줍니다. --resource-group
대신 -g
, --name
대신 -n
, --output
대신 -o
을(를) 사용할 수 있습니다.
CLI 출력에서 환경 변수 설정
이제 NIC ID가 준비되었으므로 az network nic show
을(를) 실행하여 해당 정보를 가져옵니다. 리소스 그룹 이름이 Azure 리소스 ID에 포함되어 있으므로 여기에는 리소스 그룹이 필요하지 않습니다.
az network nic show --ids $NIC_ID
이 명령은 가상 머신의 네트워크 인터페이스에 대한 모든 정보를 표시합니다. 이 데이터에는 DNS 설정, IP 정보, 보안 설정 및 MAC 주소가 포함됩니다. 이제 목표는 공용 IP 주소 및 서브넷 개체 ID를 가져오는 것입니다.
az network nic show --ids $NIC_ID \
--query '{IP:ipConfigurations[].publicIPAddress.id, Subnet:ipConfigurations[].subnet.id}' \
-o json
{
"IP": [
"/subscriptions/.../resourceGroups/TutorialResources/providers/Microsoft.Network/publicIPAddresses/TutorialVM1PublicIP"
],
"Subnet": [
"/subscriptions/.../resourceGroups/TutorialResources/providers/Microsoft.Network/virtualNetworks/TutorialVM1VNET/subnets/TutorialVM1Subnet"
]
}
이 명령은 추출된 값에 대해 사용자 지정 키('IP' 및 '서브넷')가 포함된 JSON 개체를 표시합니다. 이러한 출력 스타일은 명령줄 도구에 유용하지 않을 수 있지만, 휴먼 가독성에 도움이 되며, 사용자 지정 스크립트에 사용할 수 있습니다.
명령줄 도구를 사용하기 위해서는 사용자 지정 JSON 키 및 출력을 제거하기 위해 명령을 tsv
(으)로 변경합니다. 이 출력 스타일은 결과를 여러 변수로 로드하도록 셸 read
명령으로 처리할 수 있습니다. 별도 줄에 두 값이 표시되므로, 기본값인 줄 바꿈하지 않는 공백 대신 빈 문자열로 read
명령 구분자를 설정해야 합니다.
read -d '' IP_ID SUBNET_ID <<< $(az network nic show \
--ids $NIC_ID \
--query '[ipConfigurations[].publicIPAddress.id, ipConfigurations[].subnet.id]' \
-o tsv)
이 서브넷 ID는 바로 사용되지 않지만, 나중에 다시 조회를 수행하지 않기 위해 지금 저장해야 합니다. 지금은 공용 IP 개체 ID를 사용하여 공용 IP 주소를 조회하고 이를 셸 변수에 저장합니다.
VM1_IP_ADDR=$(az network public-ip show --ids $IP_ID \
--query ipAddress \
-o tsv)
이제 가상 머신의 IP 주소가 셸 변수에 저장되었습니다. 계속해서 이 값이 처음에 가상 머신에 연결하기 위해 사용한 것과 동일한 값인지 확인합니다.
echo $VM1_IP_ADDR
기존 서브넷에 새 가상 머신 만들기
두 번째 가상 머신은 기존 서브넷을 사용합니다. 가상 머신 생성 정보에 반환된 것이므로, 몇 가지 단계를 건너뛰고, 환경 변수에 저장된 새로운 가상 머신의 공용 IP 주소를 즉시 가져올 수 있습니다. 나중에 가상 머신에 대한 다른 정보가 필요하면, 항상 az vm show
명령으로 가져올 수 있습니다.
VM2_IP_ADDR=$(az vm create -g TutorialResources \
-n TutorialVM2 \
--image Ubuntu2204 \
--generate-ssh-keys \
--subnet $SUBNET_ID \
--query publicIPAddress \
--public-ip-sku Standard
-o tsv)
저장된 IP 주소를 사용하여 새로 생성된 가상 머신에 SSH로 로그인합니다.
ssh $VM2_IP_ADDR
계속해서 가상 머신에서 로그아웃합니다.
정리
이제 자습서가 완료되었으므로, 생성된 리소스를 정리해야 합니다. delete
명령을 사용하여 개별 리소스를 삭제할 수 있지만, 리소스 그룹에 있는 모든 리소스를 제거하는 가장 안전한 방법은 group delete
을(를) 사용하는 것입니다.
az group delete --name TutorialResources --no-wait
이 명령은 자습서 진행 중 생성된 리소스를 삭제하며, 올바른 순서로 리소스 할당을 취소할 수 있도록 보장합니다. --no-wait
매개 변수는 삭제가 수행되는 동안 CLI가 차단되지 않도록 유지합니다. 삭제가 완료될 때까지 기다리거나 진행 상태를 보려면, group wait
명령을 사용합니다.
az group wait --name TutorialResources --deleted
정리가 완료되면 자습서가 완료됩니다. 계속해서 학습한 모든 항목들에 대한 요약 내용을 살펴보고 다음 단계를 진행하는 데 도움이 되는 리소스 링크를 확인하십시오.
요약
축하합니다! 지금까지 새로운 또는 기존의 리소스를 사용하여 가상 머신을 만드는 방법을 학습하고, --query
및 --output
인수를 사용하여 셸 변수에 저장할 데이터를 캡처하고, Azure 가상 머신에 대해 생성되는 일부 리소스를 살펴봤습니다.
앞으로 진행할 내용은 사용하려는 CLI에 따라 달라집니다. 이 자습서에 포함된 기능들에 대해서는 여러 자료를 통해 더 자세히 학습할 수 있습니다.
샘플
지금 바로 특정 작업을 시작하려면 해당 샘플 스크립트를 확인하십시오.
- Linux 가상 머신 및 Windows 가상 머신 작업
- webapps 및 Azure Functions 작업
- 데이터베이스 작업 - Azure SQL 데이터베이스, PostgreSQL, MySQL 및 CosmosDB.
심화 CLI 설명서
또한 자습서에 표시된 CLI 기능에 대해 보다 자세한 항목들도 참조할 수 있습니다.
- 출력 형식에 대해 자세히 알아보기
- 출력 쿼리에 대해 자세히 알아보기
- Azure에서 권한 부여에 대해 자세히 알아보기
기타 유용한 설명서
기본값 구성 또는 확장 기능과 같은 고급 CLI 기능을 살펴볼 수도 있습니다.
피드백
CLI에 대해 피드백, 제안 사항 또는 질문이 있는 경우 여러 방법을 통해 연락할 수 있습니다.
az feedback
은(는) 개발 팀에 자유 형식의 피드백을 제공할 수 있게 해주는 CLI에 대한 기본 제공 명령입니다.- CLI에 대한 기능 요청 또는 버그 보고서를 작성하려면 Azure CLI 리포지토리를 사용하십시오.
- 질문 또는 설명이 필요한 경우에는 Azure CLI 설명서 리포지토리를 사용하십시오.
귀하가 Azure CLI를 편리하게 사용할 수 있기를 바랍니다!
본 섹션과 관련하여 문제가 있으십니까? 문제가 있으시면 본 섹션을 개선하기 위해 피드백을 제출해 주세요.
피드백
다음에 대한 사용자 의견 제출 및 보기