Создание нового образа виртуальной машины Windows из существующего с помощью Конструктора образов виртуальных машин Azure
Область применения: ✔️ Виртуальные машины Windows
В этой статье показано, как обновить существующую версию образа из Коллекции вычислений Azure (прежнее название — Общая коллекция образов), а затем опубликовать в коллекции как новую версию образа.
Чтобы настроить образ, используйте пример шаблона JSON helloImageTemplateforSIGfromWinSIG.json.
Регистрация поставщиков
Чтобы использовать построителе образов виртуальных машин, необходимо зарегистрировать поставщиков.
Проверьте регистрации поставщиков. Убедитесь, что каждый из них возвращает значение Зарегистрировано.
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
Если они не возвращают значение Зарегистрировано, зарегистрируйте поставщиков, выполнив следующие команды:
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 с именем группы ресурсов, в которую входит управляемый источником образ.
Если вы еще не создали переменные, выполните следующие команды:
# 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"
Создайте переменную для идентификатора подписки:
subscriptionID=$(az account show --query id --output tsv)
Получите версию образа, которую требуется обновить:
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.
Скачайте пример JSON, как показано в статье Создание назначаемого пользователем удостоверения и назначение разрешений для группы ресурсов.
Настройте 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
Создание образа
Отправьте конфигурацию образа в службу "Конструктор образов виртуальных машин":
az resource create \ --resource-group $sigResourceGroup \ --location $location \ --properties @helloImageTemplateforSIGfromWinSIG.json \ --is-full-object \ --resource-type Microsoft.VirtualMachineImages/imageTemplates \ -n imageTemplateforSIGfromWinSIG01
Запустите сборку образа:
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.