다음을 통해 공유


자습서: Azure CLI를 사용하여 Virtual Machine Scale Sets에 대한 사용자 지정 이미지 만들기 및 사용

확장 집합을 만들 때 VM 인스턴스 배포 시 사용할 이미지를 지정합니다. VM 인스턴스가 배포된 후 작업의 수를 줄이려면 사용자 지정 VM 이미지를 사용할 수 있습니다. 이 사용자 지정 VM 이미지에는 필요한 모든 애플리케이션 설치 또는 구성이 포함됩니다. 확장 집합에서 만들어진 모든 VM 인스턴스는 사용자 지정 VM 이미지를 사용하며, 애플리케이션 트래픽을 처리할 준비가 되어 있습니다. 이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.

  • Azure Compute Gallery 만들기
  • 특수화된 이미지 정의 만들기
  • 이미지 버전 만들기
  • 특수화된 이미지에서 확장 집합 만들기
  • 이미지 갤러리 공유

Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.

필수 조건

  • 이 문서에는 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이라는 Linux 기반 VM을 만듭니다.

export RANDOM_ID=$(openssl rand -hex 3)
export MY_RESOURCE_GROUP_NAME="myResourceGroup$RANDOM_ID"
export REGION="eastus"
export MY_VM_NAME="myVM"

az group create --name $MY_RESOURCE_GROUP_NAME --location $REGION

az vm create \
  --resource-group $MY_RESOURCE_GROUP_NAME \
  --name $MY_VM_NAME \
  --image debian11 \
  --admin-username azureuser \
  --generate-ssh-keys

VM의 IDaz vm create 명령의 출력에 표시됩니다. 이 자습서의 뒷부분에서 사용할 수 있도록 안전한 위치에 복사하고 저장합니다.

이미지 갤러리는 이미지 공유를 활성화하는 데 사용되는 기본 리소스입니다.

갤러리 이름에 허용되는 문자는 대문자 또는 소문자, 숫자, 점 및 마침표입니다. 갤러리 이름에는 대시를 사용할 수 없습니다. 갤러리 이름은 구독 내에서 고유해야 합니다.

az sig create를 사용하여 이미지 갤러리를 만드세요.

다음 예제에서

  • 미국 동부에 있는 myGalleryRG라는 갤러리에 대한 리소스 그룹을 만듭니다.
  • 갤러리의 이름은 myGallery입니다.
export MY_GALLERY_RG_NAME="myGalleryRG$RANDOM_ID"
export MY_GALLERY_NAME="myGallery$RANDOM_ID"

az group create --name $MY_GALLERY_RG_NAME --location $REGION
az sig create --resource-group $MY_GALLERY_RG_NAME --gallery-name $MY_GALLERY_NAME

이미지 정의 만들기

이미지 정의는 이미지에 대한 논리적 그룹화를 만듭니다. 내부에서 생성된 이미지 버전에 대한 정보를 관리하는 데 사용됩니다.

이미지 정의 이름은 대문자 또는 소문자, 숫자, 점, 대시 및 마침표로 구성될 수 있습니다.

이미지 정의가 올바른 형식인지 확인합니다.

  • 상태 - VM을 일반화한 경우(Windows용 Sysprep 사용 또는 Linux용 waagent -deprovision 사용) 다음을 사용하여 --os-state generalized일반화된 이미지 정의를 만들어야 합니다. 기존 사용자 계정을 제거하지 않고 VM을 사용하려는 경우 --os-state specialized를 사용하여 특수화된 이미지 정의를 만듭니다.
  • 보안 유형 - 기본적으로 구성된 신뢰할 수 있는 시작을 사용하여 새 Azure VM이 만들어집니다. 이 자습서에는 이미지 정의 및 확장 집합을 만들 때 신뢰할 수 있는 시작 구성을 반영하는 후속 코드 샘플이 포함되어 있습니다. 신뢰할 수 있는 시작을 사용하도록 설정하지 않은 VM을 사용하여 이미지를 만드는 경우 두 리소스를 모두 만들 때 올바른 보안 유형을 반영해야 합니다. 신뢰할 수 있는 시작에 대한 자세한 내용은 Azure 가상 머신에 대한 신뢰할 수 있는 시작을 참조 하세요.

이미지 정의에 대해 지정할 수 있는 값에 대한 자세한 내용은 이미지 정의를 참조하세요.

az sig image-definition create를 사용하여 갤러리에서 이미지 정의를 만듭니다.

다음 예제에서 이미지 정의는 다음과 같습니다.

  • myImageDefinition이라는 이름을 지정 했습니다.
  • 특수 Linux OS 이미지에 대해 구성됩니다 . Windows OS를 사용하여 이미지에 대한 정의를 만들려면 --os-type Windows를 사용합니다.
  • 신뢰할 수 있는 시작에 대해 구성되었습니다.
export MY_IMAGE_DEF_NAME="myImageDefinition$RANDOM_ID"
MY_PUBLISHER_NAME="myPublisher$RANDOM_ID"

az sig image-definition create \
   --resource-group $MY_GALLERY_RG_NAME \
   --gallery-name $MY_GALLERY_NAME \
   --gallery-image-definition $MY_IMAGE_DEF_NAME \
   --publisher $MY_PUBLISHER_NAME \
   --offer myOffer \
   --sku mySKU \
   --os-type Linux \
   --os-state specialized \
   --features SecurityType=TrustedLaunch

이미지 정의의 ID는 명령의 출력에 표시됩니다. 이 자습서의 뒷부분에서 사용할 수 있도록 안전한 위치에 복사하고 저장합니다.

이미지 버전 만들기

az image gallery create-image-version을 사용하여 VM에서 이미지 버전을 만듭니다.

이미지 버전에 허용되는 문자는 숫자와 마침표입니다. 숫자는 32비트 정수 범위 내에 포함되어야 합니다. 형식: MajorVersion.MinorVersion.Patch.

다음 예제에서

  • 이미지 버전은 1.0.0입니다.
  • 미국 중남부 지역에 복제본 1개, 미국 동부 지역에 복제본 1개를 만듭니다. 복제 지역에는 원본 VM이 있는 지역이 포함되어야 합니다.
  • --virtual-machine 는 이전에 만든 VM의 ID입니다.
export MY_VM_ID=$(az vm show --name $MY_VM_NAME --resource-group $MY_RESOURCE_GROUP_NAME --query "id" --output tsv)

az sig image-version create \
   --resource-group $MY_GALLERY_RG_NAME \
   --gallery-name $MY_GALLERY_NAME \
   --gallery-image-definition $MY_IMAGE_DEF_NAME \
   --gallery-image-version 1.0.0 \
   --target-regions "southcentralus=1" "eastus=1" \
   --virtual-machine $MY_VM_ID

참고 항목

동일한 이미지를 사용하여 다른 이미지 버전을 만들려면 이미지 버전이 완전히 빌드 및 복제될 때까지 기다려야 합니다.

또한 이미지 버전을 만들 때 --storage-account-type premium_lrs를 추가하여 프리미엄 스토리지에 추가하거나 --storage-account-type standard_zrs를 추가하여 영역 중복 스토리지를 추가하여 이미지를 저장할 수도 있습니다.

이미지에서 확장 집합 만들기

를 사용하여 확장 집합을 만듭니다 az vmss create. 특수 원본 VM을 사용하는 경우 매개 변수를 --specialized 추가하여 특수 이미지임을 나타냅니다.

이미지 정의 ID를 --image 사용하여 확장 집합 인스턴스를 만드는 경우 사용 가능한 최신 버전의 이미지를 사용하는 확장 집합을 만듭니다. 이미지의 특정 버전을 원하는 경우 정의할 때 이미지 버전 ID를 --image포함해야 합니다.

  • 최신 이미지 예제: /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.Compute/galleries/myGallery/images/myImage

  • 특정 이미지 예제: /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.Compute/galleries/myGallery/images/myImage/versions/1.0.0

다음 예제에서 확장 집합은 다음과 같습니다.

  • myScaleSet이라는 이름 지정
  • myImageDefinition 이미지의 최신 버전을 사용합니다.
  • 신뢰할 수 있는 시작에 대해 구성되었습니다.
export MY_IMAGE_DEF_ID=$(az sig image-definition show --resource-group $MY_GALLERY_RG_NAME --gallery-name $MY_GALLERY_NAME --gallery-image-definition $MY_IMAGE_DEF_NAME --query "id" --output tsv)
export MY_SCALE_SET_RG_NAME="myResourceGroup$RANDOM_ID"
export MY_SCALE_SET_NAME="myScaleSet$RANDOM_ID"

az group create --name $MY_SCALE_SET_RG_NAME --location eastus

az vmss create \
   --resource-group $MY_SCALE_SET_RG_NAME \
   --name $MY_SCALE_SET_NAME \
   --orchestration-mode flexible \
   --image $MY_IMAGE_DEF_ID \
   --specialized \
   --security-type TrustedLaunch

확장 집합 리소스와 VM을 모두 만들고 구성하는 데 몇 분 정도 걸립니다.

Azure RBAC(Azure 역할 기반 액세스 제어)를 사용하여 구독 간에 이미지를 공유할 수 있으며 갤러리, 이미지 정의 또는 이미지 버전 수준에서 공유할 수 있습니다. 구독 간에 이미지 버전에 대한 읽기 권한이 있는 모든 사용자는 이미지 버전을 사용하여 VM을 배포할 수 있습니다.

갤러리 수준에서 다른 사용자와 공유하는 것이 좋습니다.

다음 예제를 참조하세요.

  • az sig show를 사용하여 갤러리의 개체 ID를 가져옵니다.
  • az role assignment create를 사용하여 갤러리에 대한 액세스를 제공합니다.
    • 개체 ID를 할당 범위로 사용합니다.
    • 데모를 위해 로그인한 사용자의 ID를 담당자로 사용합니다. 테스트 또는 프로덕션 코드에서 이 코드를 사용하는 경우 이 이미지에 액세스할 수 있는 사용자를 반영하도록 담당자를 업데이트해야 합니다. Azure RBAC를 사용하여 리소스를 공유하는 방법에 대한 자세한 내용은 Azure CLI를 사용하여 Azure 역할 할당 추가 또는 제거를 참조하세요. - 이메일 주소와 함께 az role assignment create를 사용하여 사용자에게 공유 이미지 갤러리에 대한 액세스 권한을 부여합니다.
export MY_GALLERY_ID=$(az sig show --resource-group $MY_GALLERY_RG_NAME --gallery-name $MY_GALLERY_NAME --query "id" --output tsv)
export CALLER_ID=$(az ad signed-in-user show --query id -o tsv)

az role assignment create \
   --role "Reader" \
   --assignee $CALLER_ID \
   --scope $MY_GALLERY_ID

리소스 정리

확장 집합 및 추가 리소스를 제거하려면 az group delete를 사용하여 리소스 그룹 및 모든 해당 리소스를 삭제합니다. --no-wait 매개 변수는 작업이 완료될 때까지 대기하지 않고 프롬프트로 제어를 반환합니다. --yes 매개 변수는 작업을 수행하는 추가 프롬프트 없이 리소스를 삭제할 것인지 확인합니다.

다음 단계

이 자습서에서는 Azure CLI를 사용하여 확장 집합에 대한 사용자 지정 VM 이미지를 만들고 사용하는 방법을 알아보았습니다.

  • Azure Compute Gallery 만들기
  • 특수화된 이미지 정의 만들기
  • 이미지 버전 만들기
  • 특수화된 이미지에서 확장 집합 만들기
  • 이미지 갤러리 공유

애플리케이션을 확장 집합에 배포하는 방법을 알아보려면 다음 자습서로 계속 진행하세요.