Tutoriel : Créer et utiliser une image personnalisée pour des groupes de machines virtuelles identiques avec Azure CLI

Lorsque vous créez un groupe identique, vous spécifiez une image à utiliser lors du déploiement des instances de machine virtuelle. Pour réduire le nombre de tâches une fois que les instances de machine virtuelle sont déployées, vous pouvez utiliser une image de machine virtuelle personnalisée. Cette image de machine virtuelle personnalisée inclut les configurations ou installations des applications requises. Toutes les instances de machine virtuelle créées dans le groupe identique utilisent l’image de machine virtuelle personnalisée et sont prêtes à répondre au trafic des applications. Ce didacticiel vous montre comment effectuer les opérations suivantes :

  • Créer une instance Azure Compute Gallery
  • Créer une définition d’image spécialisée
  • Créer une version d’image
  • Créer un groupe identique à partir d’une image spécialisée
  • Partager une galerie d’images

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.

Prérequis

  • Cet article nécessite la version 2.4.0 ou ultérieure d’Azure CLI. Si vous utilisez Azure Cloud Shell, la version la plus récente est déjà installée.

Vue d’ensemble

Une galerie Azure Compute Gallery simplifie considérablement le partage d’images personnalisées dans votre organisation. Les images personnalisées sont comme des images de la Place de marché, sauf que vous les créez vous-même. Les images personnalisées peuvent être utilisées pour amorcer des configurations comme le préchargement des applications, les configurations d’application et d’autres configurations de système d’exploitation.

Azure Compute Gallery vous permet de partager vos images de machines virtuelles personnalisées avec d’autres utilisateurs. Choisissez les images à partager, les régions dans lesquelles vous souhaitez les rendre disponibles et les personnes avec lesquelles vous voulez les partager.

Créer et configurer une machine virtuelle source

Commencez par créer un groupe de ressource avec az group create, puis créez une machine virtuelle avec az vm create. Cette machine virtuelle est ensuite utilisée comme source de l’image.

L’exemple suivant crée une machine virtuelle Linux nommée myVM dans le groupe de ressources nommé myResourceGroup.

export RANDOM_ID=$(openssl rand -hex 3)
export MY_RESOURCE_GROUP_NAME="myResourceGroup$RANDOM_ID"
export REGION="eastus"
export MY_VM_NAME="myVM"

az group create --name $MY_RESOURCE_GROUP_NAME --location $REGION

az vm create \
  --resource-group $MY_RESOURCE_GROUP_NAME \
  --name $MY_VM_NAME \
  --image debian11 \
  --admin-username azureuser \
  --generate-ssh-keys

Conseil

L’ID de votre machine virtuelle est affichée dans la sortie de la commande az vm create. Copiez et stockez ceci à un emplacement sûr afin de pouvoir l’utiliser plus loin dans ce tutoriel.

Une galerie d’images est la ressource principale utilisée pour activer le partage d’image.

Les caractères autorisés pour les noms de galerie sont les lettres majuscules ou minuscules, les chiffres et les points. Le nom de galerie ne peut pas contenir de tirets. Les noms de galerie doivent être uniques dans votre abonnement.

Créez une galerie d’images à l’aide de az sig create.

Dans l’exemple suivant :

  • Vous créez un groupe de ressources pour la galerie nommé myGalleryRG situé dans USA Est.
  • La galerie est nommée myGallery.
export MY_GALLERY_RG_NAME="myGalleryRG$RANDOM_ID"
export MY_GALLERY_NAME="myGallery$RANDOM_ID"

az group create --name $MY_GALLERY_RG_NAME --location $REGION
az sig create --resource-group $MY_GALLERY_RG_NAME --gallery-name $MY_GALLERY_NAME

Créer une définition d’image

Les définitions d’image créent un regroupement logique des images. Elles permettent de gérer les informations relatives aux versions d’image créées au sein de celles-ci.

Les noms de définition d’image peuvent contenir des lettres majuscules ou minuscules, des chiffres, des tirets et des points.

Vérifiez que le type de votre définition d’image est approprié :

  • État : si vous avez généralisé la machine virtuelle (en utilisant Sysprep pour Windows ou waagent -deprovision pour Linux), vous devez créer une définition d’image généralisée avec --os-state generalized. Si vous souhaitez utiliser la machine virtuelle sans supprimer de comptes d’utilisateur, créez une définition d’image spécialisée à l’aide de la commande --os-state specialized.
  • Type de sécurité : les nouvelles machines virtuelles Azure sont créées avec le lancement fiable configuré par défaut. Ce tutoriel inclut des exemples de code qui reflètent la configuration de lancement fiable lors de la création de la définition d’image et du groupe identique. Si vous créez une image avec une machine virtuelle sur laquelle le lancement fiable n’est pas activé, veillez à refléter le type de sécurité approprié quand vous créez ces deux ressources. Pour plus d’informations sur le lancement fiable, consultez Lancement fiable pour les machines virtuelles Azure.

Pour plus d’informations sur les valeurs que vous pouvez spécifier pour une définition d’image, consultez Définitions d’image.

Créez une définition d’image dans la galerie avec la commande az sig image-definition create.

Dans l’exemple suivant, la définition d’image est :

  • Nommée myImageDefinition.
  • Configurée pour une image de système d’exploitation Linux spécialisée. Pour créer une définition pour des images utilisant un système d’exploitation Windows, utilisez --os-type Windows.
  • Configurée pour le lancement fiable.
export MY_IMAGE_DEF_NAME="myImageDefinition$RANDOM_ID"
MY_PUBLISHER_NAME="myPublisher$RANDOM_ID"

az sig image-definition create \
   --resource-group $MY_GALLERY_RG_NAME \
   --gallery-name $MY_GALLERY_NAME \
   --gallery-image-definition $MY_IMAGE_DEF_NAME \
   --publisher $MY_PUBLISHER_NAME \
   --offer myOffer \
   --sku mySKU \
   --os-type Linux \
   --os-state specialized \
   --features SecurityType=TrustedLaunch

Conseil

L’ID de votre définition d’image est indiqué dans la sortie de la commande. Copiez et stockez ceci à un emplacement sûr afin de pouvoir l’utiliser plus loin dans ce tutoriel.

Créer la version de l’image

Créez une version d’image à partir de la machine virtuelle à l’aide de la commande az image gallery create-image-version.

Les caractères autorisés pour la version d’image sont les chiffres et les points. Les nombres doivent être un entier 32 bits. Format: MajorVersion.MinorVersion.Patch.

Dans l’exemple suivant :

  • La version de l’image est 1.0.0.
  • Nous créons un réplica dans la région USA Centre Sud et un réplica dans la région USA Est. Les régions de réplication doivent inclure la région dans laquelle se trouve la machine virtuelle source.
  • --virtual-machine est l’ID de la machine virtuelle que nous avons créée précédemment.
export MY_VM_ID=$(az vm show --name $MY_VM_NAME --resource-group $MY_RESOURCE_GROUP_NAME --query "id" --output tsv)

az sig image-version create \
   --resource-group $MY_GALLERY_RG_NAME \
   --gallery-name $MY_GALLERY_NAME \
   --gallery-image-definition $MY_IMAGE_DEF_NAME \
   --gallery-image-version 1.0.0 \
   --target-regions "southcentralus=1" "eastus=1" \
   --virtual-machine $MY_VM_ID

Remarque

Vous devez attendre que la version de l’image soit entièrement créée et répliquée avant de pouvoir utiliser la même image pour créer une autre version de l’image.

Vous pouvez également stocker votre image dans le Stockage Premium, en ajoutant --storage-account-type premium_lrs, ou dans le stockage redondant interzone, en ajoutant --storage-account-type standard_zrs, quand vous créez la version de l’image.

Créer un groupe identique à partir de l’image

Vous créez un groupe identique en utilisant az vmss create. Si vous utilisez une machine virtuelle source spécialisée, ajoutez le paramètre --specialized pour indiquer qu’il s’agit d’une image spécialisée.

Quand vous utilisez l’ID de définition d’image pour --image afin de créer les instances de groupe identique, vous créez un groupe identique qui utilise la dernière version disponible de l’image. Si vous voulez une version spécifique de l’image, veillez à inclure l’ID de version de l’image quand vous définissez --image.

  • Exemple d’image la plus récente : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.Compute/galleries/myGallery/images/myImage

  • Exemple d’image spécifique : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.Compute/galleries/myGallery/images/myImage/versions/1.0.0

Dans l’exemple suivant, le groupe identique :

  • Est nommé myScaleSet.
  • Utilise la dernière version de l’image myImageDefinition.
  • Est configuré pour le lancement fiable.
export MY_IMAGE_DEF_ID=$(az sig image-definition show --resource-group $MY_GALLERY_RG_NAME --gallery-name $MY_GALLERY_NAME --gallery-image-definition $MY_IMAGE_DEF_NAME --query "id" --output tsv)
export MY_SCALE_SET_RG_NAME="myResourceGroup$RANDOM_ID"
export MY_SCALE_SET_NAME="myScaleSet$RANDOM_ID"

az group create --name $MY_SCALE_SET_RG_NAME --location eastus

az vmss create \
   --resource-group $MY_SCALE_SET_RG_NAME \
   --name $MY_SCALE_SET_NAME \
   --orchestration-mode flexible \
   --image $MY_IMAGE_DEF_ID \
   --specialized \
   --security-type TrustedLaunch

La création et la configuration des l’ensemble des ressources et des machines virtuelles du groupe identique prennent quelques minutes.

Vous pouvez partager des images entre des abonnements en utilisant le contrôle d’accès en fonction du rôle Azure (RBAC Azure) et vous pouvez les partager au niveau de la galerie, de la définition d’image ou de la version d’image. Tout utilisateur disposant d’autorisations de lecture sur une version d’image, même dans plusieurs abonnements, peut déployer une machine virtuelle en utilisant la version d’image.

Nous vous recommandons de partager l’accès avec d’autres utilisateurs au niveau de la galerie.

L’exemple suivant :

  • Obtient l’ID d’objet de la galerie en utilisant az sig show.
  • Fournit l’accès à la galerie en utilisant az role assignment create.
    • Utilise l’ID d’objet comme étendue de l’affectation.
    • Utilise l’ID de l’utilisateur connecté comme destinataire à des fins de démonstration. Quand vous utilisez ce code dans votre code de test ou de production, veillez à mettre à jour le destinataire pour indiquer qui doit pouvoir accéder à cette image. Pour plus d’informations sur la façon de partager des ressources à l’aide d’Azure RBAC, consultez Ajouter ou supprimer des attributions de rôle Azure à l’aide d’Azure CLI. , ainsi qu’une adresse e-mail, en utilisant az role assignment create pour donner à un utilisateur l’accès à la galerie d’images partagées.
export MY_GALLERY_ID=$(az sig show --resource-group $MY_GALLERY_RG_NAME --gallery-name $MY_GALLERY_NAME --query "id" --output tsv)
export CALLER_ID=$(az ad signed-in-user show --query id -o tsv)

az role assignment create \
   --role "Reader" \
   --assignee $CALLER_ID \
   --scope $MY_GALLERY_ID

Nettoyer les ressources

Pour supprimer votre groupe identique et les ressources supplémentaires, supprimez le groupe de ressources et toutes ses ressources avec az group delete. Le paramètre --no-wait retourne le contrôle à l’invite de commandes sans attendre que l’opération se termine. Le paramètre --yes confirme que vous souhaitez supprimer les ressources sans passer par une invite supplémentaire à cette fin.

Étapes suivantes

Dans ce tutoriel, vous avez appris à créer et utiliser une image de machine virtuelle personnalisée pour vos groupes identiques avec Azure CLI :

  • Créer une instance Azure Compute Gallery
  • Créer une définition d’image spécialisée
  • Créer une version d’image
  • Créer un groupe identique à partir d’une image spécialisée
  • Partager une galerie d’images

Passez au didacticiel suivant pour apprendre à déployer des applications dans votre groupe identique.