Creación de una nueva imagen de máquina virtual a partir de otra existente mediante Azure VM Image Builder en Linux
Se aplica a: ✔️ máquinas virtuales Linux ✔️ conjuntos de escalado flexibles
En este artículo, aprenderá a actualizar una versión de imagen existente en una instancia de Azure Compute Gallery (anteriormente denominado Shared Image Gallery) y publicarla en la galería como una nueva versión de imagen.
Para configurar la imagen, usará una plantilla JSON de ejemplo, helloImageTemplateforSIGfromSIG.json.
Registro de los proveedores
Para usar VM Image Builder, debe registrar los proveedores.
Compruebe los registros del proveedor. Asegúrese de que cada uno devuelve el valor Registrado.
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
Si no devuelven el valor Registrado, registre los proveedores mediante la ejecución de los siguientes comandos:
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
Establecimiento de variables y permisos
Si ya ha creado una instancia de Azure Compute Gallery mediante Creación y distribución de una imagen en una instancia de Azure Compute Gallery, ya se han creado algunas de las variables necesarias.
Si aún no ha creado las variables, ejecute los siguientes comandos:
# 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
Cree una variable para el id. de suscripción:
subscriptionID=$(az account show --query id --output tsv)
Obtenga la versión de la imagen que quiera actualizar:
sigDefImgVersionId=$(az sig image-version list \ -g $sigResourceGroup \ --gallery-name $sigName \ --gallery-image-definition $imageDefName \ --subscription $subscriptionID --query [].'id' -o tsv)
Creación de una identidad asignada por el usuario y establecimiento de los permisos en el grupo de recursos
Ha configurado la identidad de usuario en un ejemplo anterior, por lo que ahora debe obtener el identificador de recurso, que se anexará a la plantilla.
#get identity used previously
imgBuilderId=$(az identity list -g $sigResourceGroup --query "[?contains(name, 'aibBuiUserId')].id" -o tsv)
Si ya tiene una instancia de Azure Compute Gallery pero no la configuró siguiendo un ejemplo anterior, debe asignar permisos para que VM Image Builder acceda al grupo de recursos para que pueda acceder a la galería. Para más información, consulte Creación y distribución de una imagen en una instancia de Azure Compute Gallery.
Modificación del ejemplo helloImage
Puede revisar el ejemplo de JSON que está a punto de usar en helloImageTemplateforSIGfromSIG.json. Para obtener información sobre el archivo JSON, consulte Creación de una plantilla de Azure VM Image Builder.
Descargue el ejemplo de JSON, como se muestra en Creación de una imagen de Linux y distribución a Azure Compute Gallery mediante la CLI de Azure.
Configure el JSON con las variables:
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
Crear la imagen
Envíe la configuración de la imagen al servicio de VM Image Builder:
az resource create \ --resource-group $sigResourceGroup \ --properties @helloImageTemplateforSIGfromSIG.json \ --is-full-object \ --resource-type Microsoft.VirtualMachineImages/imageTemplates \ -n helloImageTemplateforSIGfromSIG01
Inicie la generación de la imagen:
az resource invoke-action \ --resource-group $sigResourceGroup \ --resource-type Microsoft.VirtualMachineImages/imageTemplates \ -n helloImageTemplateforSIGfromSIG01 \ --action Run
Espere a que la imagen se cree y replique antes de avanzar al paso siguiente.
Creación de la máquina virtual
Cree la máquina virtual haciendo lo siguiente:
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
Cree una conexión Secure Shell (SSH) a la máquina virtual mediante la dirección IP pública de la misma.
ssh azureuser@<pubIp>
En cuanto se haya establecido la conexión SSH, recibirá un "Mensaje del día" indicando que la imagen se ha personalizado:
******************************************************* ** This VM was built from the: ** ** !! AZURE VM IMAGE BUILDER Custom Image !! ** ** You have just been Customized :-) ** *******************************************************
Escriba
exit
para cerrar la conexión SSH.Para enumerar las versiones de la imagen que ahora están disponibles en la galería, ejecute:
az sig image-version list -g $sigResourceGroup -r $sigName -i $imageDefName -o table
Pasos siguientes
Para más información sobre los componentes del archivo JSON que usó en este artículo, consulte Crear una plantilla de Azure VM Image Builder.