Compartir a través de


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.

  1. 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
    
  2. 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.

  1. 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"
    
  2. Cree una variable para el id. de suscripción:

    subscriptionID=$(az account show --query id --output tsv)
    
  3. 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.

  1. 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.

  2. 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

  1. 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
    
  2. 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.