Создание образа виртуальной машины из имеющегося с помощью Конструктора образов виртуальных машин Azure в Linux
Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы
В этой статье показано, как обновить имеющуюся версию образа из Коллекции вычислений Azure (прежнее название — Общая коллекция образов), а затем опубликовать в коллекции как новую версию образа.
Чтобы настроить образ, используйте пример шаблона JSON helloImageTemplateforSIGfromSIG.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, у вас уже должны быть некоторые из необходимых переменных.
Если вы еще не создали переменные, выполните следующие команды:
# 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
Создайте переменную для идентификатора подписки:
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, как описано в статье Создание образа Linux и его распространение в Коллекции вычислений Azure с помощью Azure CLI.
Настройте 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
Создание образа
Отправьте конфигурацию образа в службу "Конструктор образов виртуальных машин":
az resource create \ --resource-group $sigResourceGroup \ --properties @helloImageTemplateforSIGfromSIG.json \ --is-full-object \ --resource-type Microsoft.VirtualMachineImages/imageTemplates \ -n helloImageTemplateforSIGfromSIG01
Запустите сборку образа:
az resource invoke-action \ --resource-group $sigResourceGroup \ --resource-type Microsoft.VirtualMachineImages/imageTemplates \ -n helloImageTemplateforSIGfromSIG01 \ --action Run
Дождитесь создания и репликации образа, прежде чем перейти к следующему шагу.
Создание виртуальной машины
Создайте виртуальную машину, выполнив указанные ниже действия.
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
Установите SSH-подключение к виртуальной машине, используя ее общедоступный IP-адрес.
ssh azureuser@<pubIp>
Как только ваше SSH-подключение будет установлено, вы должны получить "сообщение дня" с уведомлением о том, что образ настроен:
******************************************************* ** This VM was built from the: ** ** !! AZURE VM IMAGE BUILDER Custom Image !! ** ** You have just been Customized :-) ** *******************************************************
Введите
exit
, чтобы закрыть SSH-подключение.Чтобы получить список версий образа, которые теперь доступны в коллекции, выполните приведенную ниже команду.
az sig image-version list -g $sigResourceGroup -r $sigName -i $imageDefName -o table
Следующие шаги
Дополнительные сведения о компонентах JSON-файла, используемых в этом примере, см. в статье Создание шаблона Конструктора образов виртуальных машин Azure.