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.
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
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.
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
Créez une variable pour votre ID d’abonnement :
subscriptionID=$(az account show --query id --output tsv)
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.
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.
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
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
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
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
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 :-) ** *******************************************************
Tapez
exit
pour fermer la connexion SSH.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.