Creación de una imagen de máquina virtual Windows a partir de otra existente mediante Azure VM Image Builder
Se aplica a: ✔️ Máquinas virtuales Windows
En este artículo, aprenderá a actualizar una versión de imagen Windows 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, use una plantilla JSON de ejemplo , helloImageTemplateforSIGfromWinSIG.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.
Nota
VM Image Builder admite la creación de imágenes personalizadas solo en el mismo grupo de recursos donde se encuentra la imagen administrada de origen. En el ejemplo siguiente, actualice el nombre del grupo de recursos, ibsigRG, con el nombre del grupo de recursos en el que se encuentra la imagen administrada de origen.
Si aún no ha creado las variables, ejecute los siguientes comandos:
# 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"
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 JSO como se muestra en Creación de una identidad asignada por el usuario y establecimiento de los permisos en el grupo de recursos.
Configure el JSON con las variables:
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
Crear la imagen
Envíe la configuración de la imagen al servicio de VM Image Builder:
az resource create \ --resource-group $sigResourceGroup \ --location $location \ --properties @helloImageTemplateforSIGfromWinSIG.json \ --is-full-object \ --resource-type Microsoft.VirtualMachineImages/imageTemplates \ -n imageTemplateforSIGfromWinSIG01
Inicie la generación de la imagen:
az resource invoke-action \ --resource-group $sigResourceGroup \ --resource-type Microsoft.VirtualMachineImages/imageTemplates \ -n imageTemplateforSIGfromWinSIG01 \ --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 aibImgWinVm002 \
--admin-username $username \
--admin-password $vmpassword \
--image "/subscriptions/$subscriptionID/resourceGroups/$sigResourceGroup/providers/Microsoft.Compute/galleries/$sigName/images/$imageDefName/versions/latest" \
--location $location
Comprobación de la personalización
Cree una conexión de Escritorio remoto a la máquina virtual con el nombre de usuario y la contraseña que ha establecido al crear la máquina virtual. En la máquina virtual, abra una ventana del símbolo del sistema y ejecute:
dir c:\
Ahora debería ver dos directorios:
- buildActions: creado en la primera versión de la imagen.
- buildActions2: creado al actualizar la primera versión de imagen para crear la segunda.
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.