Поделиться через


Создание нового образа виртуальной машины Windows из существующего с помощью Конструктора образов виртуальных машин Azure

Область применения: ✔️ Виртуальные машины Windows

В этой статье показано, как обновить существующую версию образа из Коллекции вычислений Azure (прежнее название — Общая коллекция образов), а затем опубликовать в коллекции как новую версию образа.

Чтобы настроить образ, используйте пример шаблона JSON helloImageTemplateforSIGfromWinSIG.json.

Регистрация поставщиков

Чтобы использовать построителе образов виртуальных машин, необходимо зарегистрировать поставщиков.

  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, используя инструкции в статье о создании образа и его отправке в Коллекцию вычислений Azure, у вас уже должны быть некоторые из необходимых переменных.

Примечание.

Конструктор образов виртуальных машин поддерживает создание пользовательских образов только в той же группе ресурсов, где расположен образ, управляемый источником. В следующем примере обновите имя группы ресурсов ibsigRG с именем группы ресурсов, в которую входит управляемый источником образ.

  1. Если вы еще не создали переменные, выполните следующие команды:

    # Resource group name - we are using ibsigRG in this example
    sigResourceGroup=myIBWinRG
    # Datacenter location - we are using West US 2 in this example
    location=westus
    # Additional region to replicate the image to - we are using East US in this example
    additionalregion=eastus
    # name of the Azure Compute Gallery - in this example we are using myGallery
    sigName=my22stSIG
    # name of the image definition to be created - in this example we are using myImageDef
    imageDefName=winSvrimages
    # image distribution metadata reference name
    runOutputName=w2019SigRo
    # User name and password for the VM
    username="user name for the VM"
    vmpassword="password for the VM"
    
  2. Создайте переменную для идентификатора подписки:

    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)
    

Создание назначаемого пользователем удостоверения и задание разрешений для группы ресурсов

Вы настроили удостоверение пользователя в предыдущем примере, поэтому теперь необходимо получить идентификатор ресурса, который будет добавлен в шаблон.

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

Если у вас уже есть Коллекция вычислений Azure, но она не была настроена по предыдущему примеру, необходимо назначить разрешения Конструктору образов виртуальных машин для доступа к группе ресурсов, чтобы он мог получить доступ к коллекции. Дополнительные сведения см. в статье Создание образа и его распространение в Коллекцию вычислений Azure.

Изменение примера helloImage

Вы можете просмотреть пример JSON, который будете использовать в helloImageTemplateforSIGfromSIG.json. Сведения о JSON-файле см. в статье Создание шаблона Конструктора образов виртуальных машин Azure.

  1. Скачайте пример JSON, как показано в статье Создание назначаемого пользователем удостоверения и назначение разрешений для группы ресурсов.

  2. Настройте JSON с помощью своих переменных:

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

Создание образа

  1. Отправьте конфигурацию образа в службу "Конструктор образов виртуальных машин":

    az resource create \
        --resource-group $sigResourceGroup \
        --location $location \
        --properties @helloImageTemplateforSIGfromWinSIG.json \
        --is-full-object \
        --resource-type Microsoft.VirtualMachineImages/imageTemplates \
        -n imageTemplateforSIGfromWinSIG01
    
  2. Запустите сборку образа:

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

Дождитесь создания и репликации образа, прежде чем перейти к следующему шагу.

Создание виртуальной машины

Создайте виртуальную машину, выполнив указанные ниже действия.

az vm create \
--resource-group $sigResourceGroup \
--name aibImgWinVm002 \
--admin-username $username \
--admin-password $vmpassword \
--image "/subscriptions/$subscriptionID/resourceGroups/$sigResourceGroup/providers/Microsoft.Compute/galleries/$sigName/images/$imageDefName/versions/latest" \
--location $location

Проверка настройки

Подключитесь к виртуальной машине через подключение к удаленному рабочему столу, используя имя пользователя и пароль, заданные при создании виртуальной машины. На виртуальной машине откройте окно командной строки и выполните следующую команду:

dir c:\

Теперь вы увидите два каталога:

  • buildActions — создан в первой версии образа;
  • buildActions2 — создается при обновлении первой версии образа для создания второй версии образа.

Следующие шаги

Дополнительные сведения о компонентах JSON-файла, используемых в этом примере, см. в статье Создание шаблона Конструктора образов виртуальных машин Azure.