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

Les configurations de maintenance vous permettent de décider quand appliquer les mises à jour de la plate-forme à diverses ressources Azure. Cette rubrique traite des options de l’interface Azure CLI pour l’utilisation de ce service. Pour plus d’informations sur les avantages de l’utilisation des configurations de maintenance, les limitations et les autres options de gestion, consultez Gestion des mises à jour de plateformes avec les configurations de maintenance.

Important

Il existe différentes étendues qui prennent en charge certains types de machine et de planification. Par conséquent, assurez-vous de sélectionner l’étendue appropriée pour 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. Dans cet exemple, un groupe de ressources nommé myMaintenanceRG est créé 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 avoir créé le groupe de ressources, utilisez az maintenance configuration create pour créer une configuration de maintenance.

Host

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.

Vous pouvez vérifier si vous avez créé la configuration de maintenance correctement en demandant les configurations de maintenance disponibles à l’aide de az maintenance configuration list.

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

Remarque

La récurrence de la maintenance peut être exprimée quotidiennement, hebdomadairement ou mensuellement. Quelques exemples :

  • quotidiennement : la fenêtre de maintenance se reproduit tous les : « Jour » ou « 3Jours »
  • hebdomadairement : la fenêtre de maintenance se reproduit toutes les : « 3Semaines » ou « Semaine samedi,dimanche »
  • mensuellement : la fenêtre de maintenance se reproduit tous les : « Lundi jour23,jour24 » ou "Mois Dernier dimanche » ou « Mois Quatrième lundi »

Virtual Machine Scale Sets

Cet exemple crée une configuration de maintenance nommée myConfig avec l’étendue osimage 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 Arc), avec une fenêtre planifiée de 2 heures tous les 20 jours. Pour en savoir plus sur cette configuration de maintenance sur les machines virtuelles invitées, consultez Invité.

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 à l’aide de l’ID de la configuration. Spécifiez --resource-type virtualMachines et 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 

Virtual Machine Scale Sets

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 que la configuration a été appliquée correctement ou vérifier quelle configuration est actuellement appliquée à l’aide de 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

Virtual Machine Scale Sets

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 comme l’ID de l’abonnement contenant la machine virtuelle.

S’il n’y a 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, une seule est retournée, même si plusieurs mises à jour sont en attente. Les données de cette mise à jour seront 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 mise en forme en tant que tableau pour faciliter la lecture.

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

Hôte dédié

Pour rechercher 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} \
   --resourcegroup 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 renverra 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

Virtual Machine Scale Sets

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 à l’aide de az maintenance applyupdate get.

Vous pouvez utiliser default comme nom de mise à jour pour afficher les résultats de la dernière mise à jour ou remplacer myUpdateName par le nom de la mise à jour qui a été retournée lors de l’exécution de 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 correspond à l’heure à laquelle la mise à jour est terminée, soit à votre initiative, soit à celle de la plateforme au cas où la fenêtre d’automaintenance n’aurait pas été utilisée. Si aucune mise à jour n’a jamais été appliquée par le biais du contrôle de maintenance, la valeur par défaut s’affiche.

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

Virtual Machine Scale Sets

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 plus d’informations, consultez Maintenance et mises à jour.