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

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

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

Чтобы настроить образ, используйте пример шаблона JSON helloImageTemplateforSIGfromSIG.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, у вас уже должны быть некоторые из необходимых переменных.

  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. Создайте переменную для идентификатора подписки:

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

  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. Отправьте конфигурацию образа в службу "Конструктор образов виртуальных машин":

    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 
    

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

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

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

    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. Установите SSH-подключение к виртуальной машине, используя ее общедоступный IP-адрес.

    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.