Partager via


Créer une image de machine virtuelle Windows à partir d’une image existante avec Azure VM Image Builder

S’applique à : ✔️ Machine virtuelles Windows

Dans cet article, vous découvrez comment mettre à jour une version d’image Windows existante dans une galerie Azure Compute Gallery (auparavant Shared Image Gallery) et la publier dans la galerie en tant que nouvelle version.

Pour configurer l’image, vous utilisez un exemple de modèle JSON, helloImageTemplateforSIGfromWinSIG.json.

Inscrire les fournisseurs

Pour utiliser le Générateur d’images de machine virtuelle, vous devez inscrire les fournisseurs.

  1. Vérifiez les inscriptions de votre fournisseur. Assurez-vous que chacun retourne Inscrit.

    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. S’ils ne retournent pas Inscrit, inscrivez les fournisseurs en exécutant les commandes suivantes :

    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
    

Définir des variables et des autorisations

Si vous avez déjà créé une galerie Azure Compute Gallery en suivant Créer une image et la distribuer à une galerie Azure Compute Gallery, vous avez déjà créé certaines des variables dont vous avez besoin.

Notes

VM Image Builder ne prend en charge la création d’images personnalisées que dans le groupe de ressources où se trouve l’image managée source. Dans l’exemple suivant, mettez à jour le nom du groupe de ressources, ibsigRG, avec le nom du groupe de ressources dans lequel se trouve votre image managée source.

  1. Si vous n’avez pas déjà créé les variables, exécutez les commandes suivantes :

    # 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. Créez une variable pour votre ID d’abonnement :

    subscriptionID=$(az account show --query id --output tsv)
    
  3. Récupérez la version de l’image à mettre à jour :

    sigDefImgVersionId=$(az sig image-version list \
    -g $sigResourceGroup \
    --gallery-name $sigName \
    --gallery-image-definition $imageDefName \
    --subscription $subscriptionID --query [].'id' -o tsv)
    

Créer une identité affectée par l’utilisateur et définir des autorisations sur le groupe de ressources

Vous avez configuré l’identité utilisateur dans un exemple précédent. Vous devez donc maintenant obtenir l’ID de ressource, qui sera ajouté au modèle.

#get identity used previously
imgBuilderId=$(az identity list -g $sigResourceGroup --query "[?contains(name, 'aibBuiUserId')].id" -o tsv)

Si vous disposez déjà d’une galerie Azure Compute Gallery, mais que vous ne l’avez pas configurée en suivant un exemple précédent, vous devez attribuer des autorisations pour que VM Image Builder accède au groupe de ressources afin de pouvoir accéder à la galerie. Pour plus d’informations, consultez Créer une image et la distribuer à une galerie Azure Compute Gallery.

Modifier l’exemple helloImage

Vous pouvez consulter l’exemple JSON que vous êtes sur le point d’utiliser sur helloImageTemplateforSIGfromSIG.json. Pour plus d’informations sur le fichier JSON, consultez Créer un modèle Azure VM Image Builder.

  1. Téléchargez l’exemple JSON, comme indiqué dans Créer une identité affectée par l’utilisateur et définir des autorisations sur le groupe de ressources.

  2. Configurez le fichier JSON avec vos 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
    

Création de l’image

  1. Envoyez la configuration de l’image au service 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. Lancez la génération d’image :

    az resource invoke-action \
        --resource-group $sigResourceGroup \
        --resource-type  Microsoft.VirtualMachineImages/imageTemplates \
        -n imageTemplateforSIGfromWinSIG01 \
        --action Run 
    

Attendez que l’image soit générée et répliquée avant de passer à l’étape suivante.

Création de la machine virtuelle

Créez la machine virtuelle en procédant comme suit :

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

Vérifier la personnalisation

Créez une connexion Bureau à distance à la machine virtuelle en utilisant le nom d’utilisateur et le mot de passe définis lors de la création de la machine virtuelle. Dans la machine virtuelle, ouvrez une fenêtre d’invite de commandes, puis exécutez :

dir c:\

Vous devriez maintenant voir deux répertoires :

  • buildActions : créé dans la première version de l’image.
  • buildActions2 : créé quand vous avez mis à jour la première version de l’image pour créer la deuxième version de l’image.

Étapes suivantes

Pour en savoir plus sur les composants du fichier JSON que vous avez utilisé dans cet article, consultez Créer un modèle Azure VM Image Builder.