자습서: Azure CLI를 사용하여 Virtual Machine Scale Sets에 대한 사용자 지정 이미지 만들기 및 사용
확장 집합을 만들 때 VM 인스턴스 배포 시 사용할 이미지를 지정합니다. VM 인스턴스가 배포된 후 작업의 수를 줄이려면 사용자 지정 VM 이미지를 사용할 수 있습니다. 이 사용자 지정 VM 이미지에는 필요한 모든 애플리케이션 설치 또는 구성이 포함됩니다. 확장 집합에서 만들어진 모든 VM 인스턴스는 사용자 지정 VM 이미지를 사용하며, 애플리케이션 트래픽을 처리할 준비가 되어 있습니다. 이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.
- Azure Compute Gallery 만들기
- 특수화된 이미지 정의 만들기
- 이미지 버전 만들기
- 특수화된 이미지에서 확장 집합 만들기
- 이미지 갤러리 공유
Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.
필수 조건
Azure Cloud Shell에서 Bash 환경을 사용합니다. 자세한 내용은 Azure Cloud Shell의 Bash에 대한 빠른 시작을 참조하세요.
CLI 참조 명령을 로컬에서 실행하려면 Azure CLI를 설치합니다. Windows 또는 macOS에서 실행 중인 경우 Docker 컨테이너에서 Azure CLI를 실행하는 것이 좋습니다. 자세한 내용은 Docker 컨테이너에서 Azure CLI를 실행하는 방법을 참조하세요.
로컬 설치를 사용하는 경우 az login 명령을 사용하여 Azure CLI에 로그인합니다. 인증 프로세스를 완료하려면 터미널에 표시되는 단계를 수행합니다. 다른 로그인 옵션은 Azure CLI를 사용하여 로그인을 참조하세요.
메시지가 표시되면 처음 사용할 때 Azure CLI 확장을 설치합니다. 확장에 대한 자세한 내용은 Azure CLI에서 확장 사용을 참조하세요.
az version을 실행하여 설치된 버전과 종속 라이브러리를 찾습니다. 최신 버전으로 업그레이드하려면 az upgrade를 실행합니다.
- 이 문서에는 Azure CLI 버전 2.4.0 이상이 필요합니다. Azure Cloud Shell을 사용하는 경우 최신 버전이 이미 설치되어 있습니다.
개요
Azure Compute Gallery는 조직 내 사용자 지정 이미지 공유를 간소화합니다. 사용자 지정 이미지는 Marketplace 이미지와 같지만 직접 만듭니다. 애플리케이션 사전 로드, 애플리케이션 구성 및 기타 OS 구성과 같은 부트스트랩 구성에 사용자 지정 이미지를 사용할 수 있습니다.
Azure Compute Gallery를 사용하면 사용자 지정 VM 이미지를 다른 사용자와 공유할 수 있습니다. 공유할 이미지, 이미지를 제공할 지역, 이미지를 공유할 사람을 선택하세요.
원본 VM 만들기 및 구성
먼저 az group create를 사용하여 리소스 그룹을 만든 다음, az vm create를 사용하여 VM을 만듭니다. 이 VM은 이미지에 대한 원본으로 사용됩니다. 다음 예제에서는 myResourceGroup 리소스 그룹에 myVM이라는 VM을 만듭니다.
az group create --name myResourceGroup --location eastus
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image <SKU image> \
--admin-username azureuser \
--generate-ssh-keys
Important
VM의 ID는 az vm create 명령의 출력에 표시됩니다. 이 자습서의 뒷부분에서 사용할 수 있도록 이를 안전한 위치에 복사합니다.
이미지 갤러리 만들기
이미지 갤러리는 이미지 공유를 활성화하는 데 사용되는 기본 리소스입니다.
갤러리 이름에 허용되는 문자는 대문자 또는 소문자, 숫자, 점 및 마침표입니다. 갤러리 이름에 대시를 사용할 수 없습니다. 갤러리 이름은 구독 내에서 고유해야 합니다.
az sig create를 사용하여 이미지 갤러리를 만드세요. 다음 예제에서는 미국 동부에 myGalleryRG라는 리소스 그룹 및 myGallery라는 갤러리를 만듭니다.
az group create --name myGalleryRG --location eastus
az sig create --resource-group myGalleryRG --gallery-name myGallery
이미지 정의 만들기
이미지 정의는 이미지에 대한 논리적 그룹화를 만듭니다. 내부에서 생성된 이미지 버전에 대한 정보를 관리하는 데 사용됩니다.
이미지 정의 이름은 대문자 또는 소문자, 숫자, 점, 대시 및 마침표로 구성될 수 있습니다.
이미지 정의가 올바른 형식인지 확인합니다. VM을 일반화한 경우(Windows용 Sysprep 사용 또는 Linux용 waagent -프로비전 해제) --os-state generalized
를 사용하여 일반화된 이미지 정의를 만들어야 합니다. 기존 사용자 계정을 제거하지 않고 VM을 사용하려는 경우 --os-state specialized
를 사용하여 특수화된 이미지 정의를 만듭니다.
이미지 정의에 대해 지정할 수 있는 값에 대한 자세한 내용은 이미지 정의를 참조하세요.
az sig image-definition create를 사용하여 갤러리에서 이미지 정의를 만듭니다.
다음 예제에서는 이미지 정의의 이름이 myImageDefinition이며 특수 Linux OS 이미지에 대한 것입니다. Windows OS를 사용하여 이미지에 대한 정의를 만들려면 --os-type Windows
를 사용합니다.
az sig image-definition create \
--resource-group myGalleryRG \
--gallery-name myGallery \
--gallery-image-definition myImageDefinition \
--publisher myPublisher \
--offer myOffer \
--sku mySKU \
--os-type Linux \
--os-state specialized
Important
이미지 정의의 ID는 명령의 출력에 표시됩니다. 이 자습서의 뒷부분에서 사용할 수 있도록 이를 안전한 위치에 복사합니다.
이미지 버전 만들기
az image gallery create-image-version을 사용하여 VM에서 이미지 버전을 만듭니다.
이미지 버전에 허용되는 문자는 숫자 및 마침표입니다. 숫자는 32비트 정수 범위 내에 포함되어야 합니다. 형식: MajorVersion.MinorVersion.Patch.
이 예제에서 이미지의 버전은 1.0.0이며, 미국 중남부 지역에서 1개의 복제본, 미국 동부 2 지역에서 1개의 복제본을 만듭니다. 복제 지역에는 원본 VM이 있는 지역이 포함되어야 합니다.
이 예제의 --managed-image
값을 이전 단계의 VM ID로 바꿉니다.
az sig image-version create \
--resource-group myGalleryRG \
--gallery-name myGallery \
--gallery-image-definition myImageDefinition \
--gallery-image-version 1.0.0 \
--target-regions "southcentralus=1" "eastus=1" \
--managed-image "/subscriptions/<Subscription ID>/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM"
참고 항목
동일한 관리형 이미지를 사용하여 다른 이미지 버전을 만들려면 먼저 해당 이미지 버전이 완전히 빌드되어 복제될 때까지 기다려야 합니다.
또한 이미지 버전을 만들 때 --storage-account-type premium_lrs
를 추가하여 프리미엄 스토리지에 추가하거나 --storage-account-type standard_zrs
를 추가하여 영역 중복 스토리지를 추가하여 이미지를 저장할 수도 있습니다.
이미지에서 확장 집합 만들기
Important
2023년 11월부터 PowerShell 및 Azure CLI를 사용하여 만들어진 VM Scale Sets는 오케스트레이션 모드가 지정되지 않은 경우 기본적으로 유연한 오케스트레이션 모드로 설정됩니다. 이 변경 내용과 취해야 할 작업에 대한 자세한 내용은 VMSS PowerShell/CLI 고객을 위한 호환성이 손상되는 변경 - Microsoft 커뮤니티 허브를 참조하세요.
az vmss create
를 사용하여 특수화된 이미지에서 확장 집합을 만듭니다.
이미지가 특수 이미지임을 나타내는 --specialized 매개 변수를 사용하는 az vmss create
를 사용하여 확장 집합을 만듭니다.
이미지 정의 ID를 --image
에 사용하여 사용 가능한 최신 버전의 이미지에서 확장 집합 인스턴스를 만듭니다. 또한 --image
에 대한 이미지 버전 ID를 제공하여 특정 버전에서 확장 집합 인스턴스를 만들 수 있습니다.
이전에 만든 myImageDefinition 이미지의 최신 버전인 myScaleSet이라는 확장 집합을 만듭니다.
az group create --name myResourceGroup --location eastus
az vmss create \
--resource-group myResourceGroup \
--name myScaleSet \
--orchestration-mode flexible \
--image "/subscriptions/<Subscription ID>/resourceGroups/myGalleryRG/providers/Microsoft.Compute/galleries/myGallery/images/myImageDefinition" \
--specialized
확장 집합 리소스와 VM을 모두 만들고 구성하는 데 몇 분 정도 걸립니다.
갤러리 공유
Azure RBAC(Azure 역할 기반 액세스 제어)를 사용하여 구독 간에 이미지를 공유할 수 있습니다. 갤러리, 이미지 정의 또는 이미지 버전에서 이미지를 공유할 수 있습니다. 이미지 버전에 대한 읽기 권한이 있는 모든 사용자는 구독 간에도 이미지 버전을 사용하여 VM을 배포할 수 있습니다.
갤러리 수준에서 다른 사용자와 공유하는 것이 좋습니다. 갤러리의 개체 ID를 가져오려면 az sig show를 사용합니다.
az sig show \
--resource-group myGalleryRG \
--gallery-name myGallery \
--query id
이메일 주소 및 az role assignment create와 함께 개체 ID를 범위로 사용하여 사용자에게 공유 이미지 갤러리에 대한 액세스 권한을 부여합니다. <email-address>
및 <gallery iD>
를 사용자 고유의 정보로 바꿉니다.
az role assignment create \
--role "Reader" \
--assignee <email address> \
--scope <gallery ID>
Azure RBAC를 사용하여 리소스를 공유하는 방법에 대한 자세한 내용은 Azure CLI를 사용하여 Azure 역할 할당 추가 또는 제거를 참조하세요.
리소스 정리
확장 집합 및 추가 리소스를 제거하려면 az group delete를 사용하여 리소스 그룹 및 모든 해당 리소스를 삭제합니다. --no-wait
매개 변수는 작업이 완료될 때까지 대기하지 않고 프롬프트로 제어를 반환합니다. --yes
매개 변수는 작업을 수행하는 추가 프롬프트 없이 리소스를 삭제할 것인지 확인합니다.
az group delete --name myResourceGroup --no-wait --yes
다음 단계
이 자습서에서는 Azure CLI를 사용하여 확장 집합에 대한 사용자 지정 VM 이미지를 만들고 사용하는 방법을 알아보았습니다.
- Azure Compute Gallery 만들기
- 특수화된 이미지 정의 만들기
- 이미지 버전 만들기
- 특수화된 이미지에서 확장 집합 만들기
- 이미지 갤러리 공유
애플리케이션을 확장 집합에 배포하는 방법을 알아보려면 다음 자습서로 계속 진행하세요.