Contrôler les mises à jour avec les configurations de maintenance et Azure CLI

S’applique aux : ✔️ Machines virtuelles Linux ✔️ Machines virtuelles Windows ✔️ Groupes identiques flexibles ✔️ Groupes identiques uniformes

Vous pouvez utiliser la fonctionnalité Configurations de maintenance pour contrôler quand appliquer des mises à jour de plateforme à diverses ressources Azure. Cet article traite des options de l’interface Azure CLI pour l’utilisation de cette fonctionnalité. Pour obtenir plus d’informations sur les avantages de l’utilisation de Configurations de maintenance, ses limitations et les autres options de gestion, consultez Gestion des mises à jour de plateformes avec Configurations de maintenance.

Important

Des étendues spécifiques prennent en charge certains types de machines et certaines planifications. Veillez à sélectionner l’étendue adaptée à votre machine virtuelle.

Créer une configuration de maintenance

La première étape de création d’une configuration de maintenance consiste à créer un groupe de ressources comme conteneur pour votre configuration. Cet exemple crée un groupe de ressources nommé myMaintenanceRG dans eastus. Si vous avez déjà un groupe de ressources et que vous souhaitez l’utiliser, vous pouvez ignorer cette partie et remplacer le nom du groupe de ressources par le vôtre dans le reste des exemples.

az group create \
   --location eastus \
   --name myMaintenanceRG

Après votre création du groupe de ressources, utilisez az maintenance configuration create pour créer une configuration de maintenance.

Hôte

Cet exemple crée une configuration de maintenance nommée myConfig étendue aux machines hôtes, avec une fenêtre planifiée de 5 heures, le quatrième lundi de chaque mois :

az maintenance configuration create \
   --resource-group myMaintenanceRG \
   --resource-name myConfig \
   --maintenance-scope host \
   --location eastus \
   --maintenance-window-duration "05:00" \
   --maintenance-window-recur-every "Month Fourth Monday" \
   --maintenance-window-start-date-time "2020-12-30 08:00" \
   --maintenance-window-time-zone "Pacific Standard Time" 

L’utilisation de --maintenance-scope host garantit l’utilisation de la configuration de maintenance pour contrôler les mises à jour de l’infrastructure hôte. Si vous essayez de créer une configuration portant le même nom, mais dans un autre emplacement, vous obtenez une erreur. Les noms de configuration doivent être uniques dans votre groupe de ressources.

Pour vérifier votre création correcte de la configuration de maintenance, vous pouvez interroger configurations de maintenance disponibles en utilisant az maintenance configuration list :

az maintenance configuration list 
   --query "[].{Name:name, ID:id}" 
   --output table 

Vous pouvez exprimer une périodicité de maintenance quotidienne, hebdomadaire ou mensuelle. Voici quelques exemples :

  • Quotidienne : une valeur maintenance-window-recur-every de "Day" ou "3Days".
  • Hebdomadaire : une valeur maintenance-window-recur-every de "3Weeks" ou "Week Saturday,Sunday".
  • Mensuelle : une valeur maintenance-window-recur-every de "Month day23,day24", "Month Last Sunday" ou Month Fourth Monday.

Groupes de machines virtuelles identiques

Cet exemple crée une configuration de maintenance nommée myConfig avec l’étendue d’image de système d’exploitation pour des groupes de machines virtuelles identiques avec une fenêtre planifiée de 5 heures, le quatrième lundi de chaque mois :

az maintenance configuration create \
   --resource-group myMaintenanceRG \
   --resource-name myConfig \
   --maintenance-scope osimage \
   --location eastus \
   --maintenance-window-duration "05:00" \
   --maintenance-window-recur-every "Month Fourth Monday" \
   --maintenance-window-start-date-time "2020-12-30 08:00" \
   --maintenance-window-time-zone "Pacific Standard Time" 

MV invitées

Cet exemple crée une configuration de maintenance nommée myConfig avec, pour étendue, les machines invitées (machines virtuelles et serveurs avec Azure Arc), avec une fenêtre planifiée de 2 heures tous les 20 jours. Découvrez plus d’informations sur les configurations de maintenance sur les machines virtuelles invitées.

az maintenance configuration create \
   --resource-group myMaintenanceRG \
   --resource-name myConfig \
   --maintenance-scope InGuestPatch \
   --location eastus \
   --maintenance-window-duration "02:00" \
   --maintenance-window-recur-every "20days" \
   --maintenance-window-start-date-time "2022-12-30 07:00" \
   --maintenance-window-time-zone "Pacific Standard Time" \
   --install-patches-linux-parameters package-name-masks-to-exclude="ppt" package-name-masks-to-include="apt" classifications-to-include="Other" \
   --install-patches-windows-parameters kb-numbers-to-exclude="KB123456" kb-numbers-to-include="KB123456" classifications-to-include="FeaturePack" \
   --reboot-setting "IfRequired" \
   --extension-properties InGuestPatchMode="User"

Affecter la configuration

Utilisez az maintenance assignment create pour affecter la configuration à votre machine.

Machine virtuelle isolée

Appliquez la configuration à une machine virtuelle hôte isolée en utilisant l’ID de la configuration. Spécifier --resource-type virtualMachines. Fournissez le nom de la machine virtuelle pour --resource-name, le groupe de ressources de la machine virtuelle pour --resource-group et l’emplacement de la machine virtuelle pour --location.

az maintenance assignment create \
   --resource-group myMaintenanceRG \
   --location eastus \
   --resource-name myVM \
   --resource-type virtualMachines \
   --provider-name Microsoft.Compute \
   --configuration-assignment-name myConfig \
   --maintenance-configuration-id "/subscriptions/{subscription ID}/resourcegroups/myMaintenanceRG/providers/Microsoft.Maintenance/maintenanceConfigurations/myConfig"

Hôte dédié

Pour appliquer une configuration à un hôte dédié, vous devez inclure --resource-type hosts, --resource-parent-name avec le nom du groupe hôte et --resource-parent-type hostGroups.

Le paramètre --resource-id est l’ID de l’hôte. Vous pouvez utiliser az-vm-host-get-instance-view pour obtenir l’ID de votre hôte dédié.

az maintenance assignment create \
   --resource-group myDHResourceGroup \
   --resource-name myHost \
   --resource-type hosts \
   --provider-name Microsoft.Compute \
   --configuration-assignment-name myConfig \
   --maintenance-configuration-id "/subscriptions/{subscription ID}/resourcegroups/myDhResourceGroup/providers/Microsoft.Maintenance/maintenanceConfigurations/myConfig" \
   --location eastus \
   --resource-parent-name myHostGroup \
   --resource-parent-type hostGroups 

Groupes de machines virtuelles identiques

az maintenance assignment create \
   --resource-group myMaintenanceRG \
   --location eastus \
   --resource-name myVMSS \
   --resource-type virtualMachineScaleSets \
   --provider-name Microsoft.Compute \
   --configuration-assignment-name myConfig \
   --maintenance-configuration-id "/subscriptions/{subscription ID}/resourcegroups/myMaintenanceRG/providers/Microsoft.Maintenance/maintenanceConfigurations/myConfig"

MV invitées

az maintenance assignment create \
   --resource-group myMaintenanceRG \
   --location eastus \
   --resource-name myVM \
   --resource-type virtualMachines \
   --provider-name Microsoft.Compute \
   --configuration-assignment-name myConfig \
   --maintenance-configuration-id "/subscriptions/{subscription ID}/resourcegroups/myMaintenanceRG/providers/Microsoft.Maintenance/maintenanceConfigurations/myConfig"

Vérifier la configuration

Vous pouvez vérifier l’application correcte de la configuration, ou vérifier la configuration qui est actuellement appliquée, en utilisant az maintenance assignment list.

Machine virtuelle isolée

az maintenance assignment list \
   --provider-name Microsoft.Compute \
   --resource-group myMaintenanceRG \
   --resource-name myVM \
   --resource-type virtualMachines \
   --query "[].{resource:resourceGroup, configName:name}" \
   --output table

Hôte dédié

az maintenance assignment list \
   --resource-group myDHResourceGroup \
   --resource-name myHost \
   --resource-type hosts \
   --provider-name Microsoft.Compute \
   --resource-parent-name myHostGroup \
   --resource-parent-type hostGroups \
   --query "[].{ResourceGroup:resourceGroup,configName:name}" \
   --output table

Groupes de machines virtuelles identiques

az maintenance assignment list \
   --provider-name Microsoft.Compute \
   --resource-group myMaintenanceRG \
   --resource-name myVMSS \
   --resource-type virtualMachines \
   --query "[].{resource:resourceGroup, configName:name}" \
   --output table

MV invitées

az maintenance assignment list \
   --provider-name Microsoft.Compute \
   --resource-group myMaintenanceRG \
   --resource-name myVM \
   --resource-type virtualMachines \
   --query "[].{resource:resourceGroup, configName:name}" \
   --output table

Rechercher les mises à jour en attente

Utilisez az maintenance update list pour voir s’il existe des mises à jour en attente. Mettez à jour --subscription pour qu’il soit l’ID de l’abonnement contenant la machine virtuelle.

S’il n’existe aucune mise à jour, la commande retourne un message d’erreur qui contient le texte suivant Resource not found...StatusCode: 404.

S’il existe des mises à jour, la commande en retourne une uniquement, même lors plusieurs mises à jour sont en attente. Les données de cette mise à jour sont retournées dans un objet :

[
  {
    "impactDurationInSec": 9,
    "impactType": "Freeze",
    "maintenanceScope": "Host",
    "notBefore": "2020-03-03T07:23:04.905538+00:00",
    "resourceId": "/subscriptions/9120c5ff-e78e-4bd0-b29f-75c19cadd078/resourcegroups/DemoRG/providers/Microsoft.Compute/hostGroups/demoHostGroup/hosts/myHost",
    "status": "Pending"
  }
]

Machine virtuelle isolée

Recherchez les mises à jour en attente pour une machine virtuelle isolée. Dans cet exemple, la sortie est présentée sous forme de tableau pour faciliter la lecture :

az maintenance update list \
   --subscription {subscription ID} \
   --resource-group myMaintenanceRg \
   --resource-name myVM \
   --resource-type virtualMachines \
   --provider-name Microsoft.Compute \
   --output table

Hôte dédié

Recherchez les mises à jour en attente pour un hôte dédié. Dans cet exemple, la sortie est mise en forme en tant que tableau pour faciliter la lecture. Remplacez les valeurs des ressources par les vôtres.

az maintenance update list \
   --subscription {subscription ID} \
   --resource-group myHostResourceGroup \
   --resource-name myHost \
   --resource-type hosts \
   --provider-name Microsoft.Compute \
   --resource-parentname myHostGroup \
   --resource-parent-type hostGroups \
   --output table

Appliquer des mises à jour

Utilisez az maintenance apply update pour appliquer les mises à jour en attente. En cas de réussite, cette commande renvoie un fichier JSON contenant les détails de la mise à jour. L’application des appels de mise à jour peut prendre jusqu’à 2 heures.

Machine virtuelle isolée

Créez une demande d’application des mises à jour à une machine virtuelle isolée :

az maintenance applyupdate create \
   --subscription {subscriptionID} \
   --resource-group myMaintenanceRG \
   --resource-name myVM \
   --resource-type virtualMachines \
   --provider-name Microsoft.Compute

Hôte dédié

Appliquez les mises à jour à un hôte dédié :

az maintenance applyupdate create \
   --subscription {subscriptionID} \
   --resource-group myHostResourceGroup \
   --resource-name myHost \
   --resource-type hosts \
   --provider-name Microsoft.Compute \
   --resource-parent-name myHostGroup \
   --resource-parent-type hostGroups

Groupes de machines virtuelles identiques

Appliquez la mise à jour à un groupe identique :

az maintenance applyupdate create \
   --subscription {subscriptionID} \
   --resource-group myMaintenanceRG \
   --resource-name myVMSS \
   --resource-type virtualMachineScaleSets \
   --provider-name Microsoft.Compute

Vérifier l’état de l’application des mises à jour

Vous pouvez vérifier la progression des mises à jour en tirant parti de az maintenance applyupdate get.

Pour voir les résultats de la dernière mise à jour, utilisez default comme nom de mise à jour. Vous pouvez également remplacer myUpdateName par le nom de la mise à jour qui a été retournée lorsque vous avez exécuté az maintenance applyupdate create.

Status         : Completed
ResourceId     : /subscriptions/12ae7457-4a34-465c-94c1-17c058c2bd25/resourcegroups/TestShantS/providers/Microsoft.Comp
ute/virtualMachines/DXT-test-04-iso
LastUpdateTime : 1/1/2020 12:00:00 AM
Id             : /subscriptions/12ae7457-4a34-465c-94c1-17c058c2bd25/resourcegroups/TestShantS/providers/Microsoft.Comp
ute/virtualMachines/DXT-test-04-iso/providers/Microsoft.Maintenance/applyUpdates/default
Name           : default
Type           : Microsoft.Maintenance/applyUpdates

LastUpdateTime est l’heure à laquelle la mise à jour s’est terminée, que vous ayez lancé la mise à jour ou que la plateforme l’ait lancée parce que vous n’avez pas utilisé la fenêtre de maintenance automatique. Si une mise à jour n’a jamais été appliquée par le biais de la fonctionnalité Configurations de maintenance, LastUpdateTime affiche la valeur par défaut.

Machine virtuelle isolée

az maintenance applyupdate get \
   --subscription {subscriptionID} \ 
   --resource-group myMaintenanceRG \
   --resource-name myVM \
   --resource-type virtualMachines \
   --provider-name Microsoft.Compute \
   --apply-update-name myUpdateName \
   --query "{LastUpdate:lastUpdateTime, Name:name, ResourceGroup:resourceGroup, Status:status}" \
   --output table

Hôte dédié

az maintenance applyupdate get \
   --subscription {subscriptionID} \ 
   --resource-group myMaintenanceRG \
   --resource-name myHost \
   --resource-type hosts \
   --provider-name Microsoft.Compute \
   --resource-parent-name myHostGroup \ 
   --resource-parent-type hostGroups \
   --apply-update-name myUpdateName \
   --query "{LastUpdate:lastUpdateTime, Name:name, ResourceGroup:resourceGroup, Status:status}" \
   --output table

Groupes de machines virtuelles identiques

az maintenance applyupdate get \
   --subscription {subscriptionID} \ 
   --resource-group myMaintenanceRG \
   --resource-name myVMSS \
   --resource-type virtualMachineScaleSets \
   --provider-name Microsoft.Compute \
   --apply-update-name myUpdateName \
   --query "{LastUpdate:lastUpdateTime, Name:name, ResourceGroup:resourceGroup, Status:status}" \
   --output table

Supprimer une configuration de maintenance

Utilisez az maintenance configuration delete pour supprimer une configuration de maintenance. La suppression de la configuration supprime le contrôle de maintenance des ressources associées.

az maintenance configuration delete \
   --subscription 1111abcd-1a11-1a2b-1a12-123456789abc \
   -resource-group myResourceGroup \
   --resource-name myConfig

Étapes suivantes

Pour obtenir plus d’informations, consultez Maintenance des machines virtuelles dans Azure.