다음을 통해 공유


Linux에서 Azure VM Image Builder를 사용하여 기존 이미지에서 새 Windows VM 이미지 만들기

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

이 문서에서는 Azure Compute Gallery(이전의 Shared Image Gallery)에서 기존 이미지 버전을 업데이트하고 이를 새 이미지 버전으로 갤러리에 게시하는 방법에 대해 알아봅니다.

이미지를 구성하려면 샘플 JSON 템플릿인 helloImageTemplateforSIGfromSIG.json을 사용합니다.

공급자 등록

VM Image Builder를 사용하려면 공급자를 등록해야 합니다.

  1. 공급자 등록을 확인합니다. 각 항목에서 등록됨을 반환하는지 확인합니다.

    az provider show -n Microsoft.VirtualMachineImages | grep registrationState
    az provider show -n Microsoft.KeyVault | grep registrationState
    az provider show -n Microsoft.Compute | grep registrationState
    az provider show -n Microsoft.Storage | grep registrationState
    az provider show -n Microsoft.Network | grep registrationState
    az provider show -n Microsoft.ContainerInstance | grep registrationState
    
  2. 등록됨이 반환되지 않으면 다음 명령을 실행하여 공급자를 등록합니다.

    az provider register -n Microsoft.VirtualMachineImages
    az provider register -n Microsoft.Compute
    az provider register -n Microsoft.KeyVault
    az provider register -n Microsoft.Storage
    az provider register -n Microsoft.Network
    az provider register -n Microsoft.ContainerInstance
    

변수 및 사용 권한 설정

이미지 만들기 및 Azure Compute Gallery에 배포를 사용하여 Azure Compute Gallery를 이미 만든 경우 필요한 변수 중 일부를 이미 만든 것입니다.

  1. 변수를 아직 만들지 않은 경우 다음 명령을 실행합니다.

    # Resource group name 
    sigResourceGroup=ibLinuxGalleryRG
    # Gallery location 
    location=westus2
    # Additional region to replicate the image version to 
    additionalregion=eastus
    # Name of the Azure Compute Gallery 
    sigName=myIbGallery
    # Name of the image definition to use
    imageDefName=myIbImageDef
    # image distribution metadata reference name
    runOutputName=aibSIGLinuxUpdate
    
  2. 구독 ID에 대한 변수를 만듭니다.

    subscriptionID=$(az account show --query id --output tsv)
    
  3. 업데이트하려는 이미지 버전을 가져옵니다.

    sigDefImgVersionId=$(az sig image-version list \
      -g $sigResourceGroup \
      --gallery-name $sigName \
      --gallery-image-definition $imageDefName \
      --subscription $subscriptionID --query [].'id' -o tsv)
    

사용자 할당 ID 만들기 및 리소스 그룹에 대한 사용 권한 설정

이전 예제에서 사용자 ID를 설정했으므로 이제 템플릿에 추가될 리소스 ID를 가져와야 합니다.

#get identity used previously
imgBuilderId=$(az identity list -g $sigResourceGroup --query "[?contains(name, 'aibBuiUserId')].id" -o tsv)

Azure Compute Gallery가 이미 있지만 이전 예제에 따라 설정하지 않은 경우 VM Image Builder가 갤러리에 액세스할 수 있도록 리소스 그룹에 액세스할 수 있는 권한을 할당해야 합니다. 자세한 내용은 이미지 만들기 및 Azure Compute Gallery에 배포를 참조하세요.

helloImage 예제 수정

사용하려는 JSON 예제는 helloImageTemplateforSIGfromSIG.json에서 검토할 수 있습니다. JSON 파일에 대한 자세한 내용은 Azure VM Image Builder 템플릿 만들기를 참조하세요.

  1. Linux 이미지를 만들어 Azure CLI를 사용하여 Azure Compute Gallery에 배포에서와 같이 JSON 예제를 다운로드합니다.

  2. 변수를 사용하여 JSON을 구성합니다.

    curl https://raw.githubusercontent.com/azure/azvmimagebuilder/master/quickquickstarts/8_Creating_a_Custom_Linux_Shared_Image_Gallery_Image_from_SIG/helloImageTemplateforSIGfromSIG.json -o helloImageTemplateforSIGfromSIG.json
    sed -i -e "s/<subscriptionID>/$subscriptionID/g" helloImageTemplateforSIGfromSIG.json
    sed -i -e "s/<rgName>/$sigResourceGroup/g" helloImageTemplateforSIGfromSIG.json
    sed -i -e "s/<imageDefName>/$imageDefName/g" helloImageTemplateforSIGfromSIG.json
    sed -i -e "s/<sharedImageGalName>/$sigName/g" helloImageTemplateforSIGfromSIG.json
    sed -i -e "s%<sigDefImgVersionId>%$sigDefImgVersionId%g" helloImageTemplateforSIGfromSIG.json
    sed -i -e "s/<region1>/$location/g" helloImageTemplateforSIGfromSIG.json
    sed -i -e "s/<region2>/$additionalregion/g" helloImageTemplateforSIGfromSIG.json
    sed -i -e "s/<runOutputName>/$runOutputName/g" helloImageTemplateforSIGfromSIG.json
    sed -i -e "s%<imgBuilderId>%$imgBuilderId%g" helloImageTemplateforSIGfromSIG.json
    

이미지 만들기

  1. 이미지 구성을 VM Image Builder 서비스에 제출합니다.

    az resource create \
        --resource-group $sigResourceGroup \
        --properties @helloImageTemplateforSIGfromSIG.json \
        --is-full-object \
        --resource-type Microsoft.VirtualMachineImages/imageTemplates \
        -n helloImageTemplateforSIGfromSIG01
    
  2. 이미지 빌드를 시작합니다.

    az resource invoke-action \
        --resource-group $sigResourceGroup \
        --resource-type  Microsoft.VirtualMachineImages/imageTemplates \
        -n helloImageTemplateforSIGfromSIG01 \
        --action Run 
    

다음 단계로 이동하기 전에 이미지가 빌드 및 복제될 때까지 기다립니다.

VM 만들기

  1. 다음을 수행하여 VM을 만듭니다.

    az vm create \
    --resource-group $sigResourceGroup \
    --name aibImgVm001 \
    --admin-username azureuser \
    --location $location \
    --image "/subscriptions/$subscriptionID/resourceGroups/$sigResourceGroup/providers/Microsoft.Compute/galleries/$sigName/images/$imageDefName/versions/latest" \
    --generate-ssh-keys
    
  2. VM의 공용 IP 주소를 사용하여 VM에 대한 SSH(Secure Shell) 연결을 만듭니다.

    ssh azureuser@<pubIp>
    

    SSH 연결이 설정되면 이미지가 사용자 지정되었다는 "오늘의 메시지"가 표시됩니다.

    *******************************************************
    **            This VM was built from the:            **
    **      !! AZURE VM IMAGE BUILDER Custom Image !!    **
    **         You have just been Customized :-)         **
    *******************************************************
    
  3. exit를 입력하여 SSH 연결을 닫습니다.

  4. 현재 갤러리에서 사용할 수 있는 이미지 버전을 나열하려면 다음을 실행합니다.

    az sig image-version list -g $sigResourceGroup -r $sigName -i $imageDefName -o table
    

다음 단계

이 문서에서 사용한 JSON 파일 구성 요소에 대해 자세히 알아보려면 Azure VM Image Builder 템플릿 만들기를 참조하세요.