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

S’applique à : ✔️ Machines virtuelles Linux ✔️ Groupes identiques flexibles

Dans cet article, vous découvrez comment mettre à jour une version existante d’une image 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, helloImageTemplateforSIGfromSIG.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.

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

    # 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. 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 image Linux et la distribuer à une galerie Azure Compute Gallery avec Azure CLI.

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

Création de l’image

  1. Envoyez la configuration de l’image au service VM Image Builder :

    az resource create \
        --resource-group $sigResourceGroup \
        --properties @helloImageTemplateforSIGfromSIG.json \
        --is-full-object \
        --resource-type Microsoft.VirtualMachineImages/imageTemplates \
        -n helloImageTemplateforSIGfromSIG01
    
  2. Lancez la génération d’image :

    az resource invoke-action \
        --resource-group $sigResourceGroup \
        --resource-type  Microsoft.VirtualMachineImages/imageTemplates \
        -n helloImageTemplateforSIGfromSIG01 \
        --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

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

    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. Créez une connexion Secure Shell (SSH) à la machine virtuelle en utilisant l’adresse IP publique de cette dernière.

    ssh azureuser@<pubIp>
    

    Une fois la connexion SSH établie, vous devez recevoir un « Message du jour » indiquant que l’image a été personnalisée :

    *******************************************************
    **            This VM was built from the:            **
    **      !! AZURE VM IMAGE BUILDER Custom Image !!    **
    **         You have just been Customized :-)         **
    *******************************************************
    
  3. Tapez exit pour fermer la connexion SSH.

  4. Pour lister les versions de l’image maintenant disponibles dans votre bibliothèque, exécutez :

    az sig image-version list -g $sigResourceGroup -r $sigName -i $imageDefName -o table
    

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