Partager via


Gestion par programmation des mises à jour pour les serveurs avec Azure Arc

Cet article vous guide tout au long du processus d’utilisation de l’API REST Azure pour déclencher une évaluation et un déploiement de mise à jour sur vos serveurs avec Azure Arc avec le Gestionnaire de mise à jour Azure dans Azure. Si vous débutez avec le Gestionnaire de mise à jour Azure et que vous souhaitez en savoir plus, consultez Vue d’ensemble du Gestionnaire de mise à jour. Pour utiliser l’API REST Azure pour gérer des machines virtuelles Azure, consultez Guide pratique pour utiliser des machines virtuelles Azure par programmation.

Le Gestionnaire de mise à jour dans Azure vous permet d’utiliser l’API REST Azure pour l’accès par programme. En outre, vous pouvez utiliser les commandes REST appropriées à partir d’Azure PowerShell et d’Azure CLI.

La prise en charge de l’API REST Azure pour gérer les serveurs avec Azure Arc est disponible via l’extension de machine virtuelle du Gestionnaire de mise à jour.

Update assessment (Évaluation des mises à jour)

Pour déclencher une évaluation de mise à jour sur votre serveur avec Azure Arc, spécifiez la requête POST suivante :

Pour spécifier la requête POST, vous pouvez utiliser la commande Azure CLI az rest.

az rest --method post --url https://management.azure.com/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.HybridCompute/machines/machineName/assessPatches?api-version=2020-08-15-preview --body @body.json

Déploiement de mises à jour

Pour déclencher un déploiement de mise à jour sur votre serveur avec Azure Arc, spécifiez la requête POST suivante :

POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.HybridCompute/machines/machineName/installPatches?api-version=2020-08-15-preview`

Corps de la demande

Le tableau suivant décrit les éléments du corps de la demande :

Propriété Description
maximumDuration Durée maximale en minutes pendant laquelle l’opération de mise à jour du système d’exploitation peut prendre. Il doit s’agir d’une chaîne de durée conforme à ISO 8601, comme PT100M.
rebootSetting Indicateur permettant de savoir si vous devez redémarrer la machine, indique si Azure Update Manager (AUM) doit redémarrer la machine dans le cadre de la tâche de mise à jour. Les valeurs acceptables sont : IfRequired, NeverReboot, AlwaysReboot.
windowsParameters Options de paramètre pour la mise à jour du système d’exploitation invité sur les machines exécutant un système d’exploitation Microsoft Windows Server pris en charge.
windowsParameters - classificationsToInclude Liste des catégories ou classifications des mises à jour du système d’exploitation à appliquer, comme pris en charge et fournis par le système d’exploitation Windows Server. Les valeurs acceptables sont : Critical, Security, UpdateRollup, FeaturePack, ServicePack, Definition, Tools, Update
windowsParameters - kbNumbersToInclude Liste des ID de la base de connaissances Windows Update disponibles pour l’ordinateur et dont vous avez besoin. Si vous avez inclus des « classificationsToInclude », les bases de connaissance disponibles dans la catégorie sont installées. 'kbNumbersToInclude' est une option permettant de fournir la liste des ID de base de connaissances spécifiques sur et au-dessus que vous souhaitez installer. Par exemple : 1234
windowsParameters - kbNumbersToExclude Liste des ID KB de Windows Update disponibles pour la machine et qui ne doivent pas être installés. Si vous avez inclus des « classificationsToInclude », les bases de connaissance disponibles dans la catégorie sont installées. 'kbNumbersToExclude' est une option permettant de fournir la liste des ID de base de connaissances spécifiques que vous ne souhaitez pas installer. Par exemple : 5678
maxPatchPublishDate Il est utilisé pour installer les correctifs publiés à cette date de publication maximale ou avant.
linuxParameters Options de paramètre pour la mise à jour du système d’exploitation invité lorsque la machine exécute une distribution Linux prise en charge
linuxParameters - classificationsToInclude Liste des catégories ou classifications des mises à jour du système d’exploitation à appliquer, comme pris en charge et fournis par le gestionnaire de package du système d’exploitation Linux utilisé. Les valeurs acceptables sont : Critical, Security, Others. Pour plus d’informations, consultez Gestionnaire de package Linux et la prise en charge du système d’exploitation.
linuxParameters - packageNameMasksToInclude Liste des packages Linux disponibles pour la machine et qui doivent être installés. Si vous avez inclus des « classificationsToInclude », les packages disponibles dans la catégorie sont installés. 'packageNameMasksToInclude' est une option permettant de fournir la liste des packages spécifiques sur et au-dessus que vous souhaitez installer. Par exemple : mysql, libc=1.0.1.1, kernel*
linuxParameters - packageNameMasksToExclude Liste des packages Linux disponibles pour la machine et qui ne doivent pas être installés. Si vous avez inclus des « classificationsToInclude », les packages disponibles dans la catégorie sont installés. 'packageNameMasksToExclude' est une option permettant de fournir la liste des packages spécifiques que vous ne souhaitez pas installer. Par exemple : mysql, libc=1.0.1.1, kernel*

Pour spécifier la requête POST, vous pouvez utiliser la commande Azure CLI az rest.

az rest --method post --url https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/Test/providers/Microsoft.HybridCompute/machines/WIN-8/installPatches?api-version=2020-08-15-preview @body.json

Le format du corps de la demande pour la version 2020-08-15 est le suivant :

{
        "maximumDuration": "PT120M",
        "rebootSetting": "IfRequired",
        "windowsParameters": {
          "classificationsToInclude": [
            "Security",
            "UpdateRollup",
            "FeaturePack",
            "ServicePack"
          ],
          "kbNumbersToInclude": [
            "11111111111",
            "22222222222222"
          ],
          "kbNumbersToExclude": [
            "333333333333",
            "55555555555"
          ]
        }
  }

Créer une planification de configuration de maintenance

Pour créer une planification de configuration de maintenance, spécifiez la requête PUT suivante :

PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Maintenance/maintenanceConfigurations/<maintenanceConfigurationsName>?api-version=2021-09-01-preview`

Corps de la demande

Le tableau suivant décrit les éléments du corps de la demande :

Propriété Description
id Identificateur complet de la ressource
location Obtient ou définit l’emplacement de la ressource
name Nom de la ressource
properties.extensionProperties Obtient ou définit extensionProperties de maintenanceConfiguration
properties.maintenanceScope Obtient ou définit maintenanceScope de la configuration
properties.maintenanceWindow.duration Durée de la fenêtre de maintenance au format HH:MM. Si vous n’indiquez rien, la valeur par défaut est utilisée en fonction de l’étendue de maintenance fournie. Exemple : 05:00.
properties.maintenanceWindow.expirationDateTime Date d’expiration effective de la fenêtre de maintenance au format AAAA-MM-JJ hh:mm. La fenêtre est créée dans le fuseau horaire fourni à l’heure d’été en fonction de ce fuseau horaire. Vous devez définir la date d’expiration à une date ultérieure. Si vous ne l’indiquez pas, le paramètre sera défini sur la date/heure maximale, 9999-12-31 23:59:59.
properties.maintenanceWindow.recurEvery Taux auquel une fenêtre de maintenance est censée se répéter. La cadence peut être exprimée sous la forme de planifications quotidiennes, hebdomadaires ou mensuelles. Vous pouvez mettre en forme les planifications quotidiennes en tant que recurEvery : [Fréquence en tant qu’entier]['Day(s)']. Si aucune fréquence n’est fournie, la fréquence par défaut est 1. Voici des exemples de planifications quotidiennes : recurEvery: Day, recurEvery: 3Days. Les horaires hebdomadaires sont formatés comme suit : recurEvery : [Fréquence sous forme d’entier]['Semaine(s)'] [Liste des jours de la semaine, du lundi au dimanche, séparée par des virgules, optionnelle]. Voici des exemples de planifications hebdomadaires : recurEvery : 3Weeks, recurEvery : Week Saturday, Sunday. Vous pouvez mettre en forme des planifications mensuelles sous la forme [Fréquence sous forme d’entier][’Month(s)’] [Liste séparée par des virgules de jours de mois] ou [Fréquence sous forme d’entier][’Month(s)’] [Semaine du mois (First, Second, Third, Fourth, Last)] [Jour de la semaine Monday-Sunday]. Voici des exemples de planifications mensuelles : recurEvery: recurEvery: Month, recurEvery: 2Months, recurEvery: Month day23,day24, recurEvery: Month Last Sunday, recurEvery: Month Fourth Monday.
properties.maintenanceWindow.startDateTime Date de début effective de la fenêtre de maintenance au format AAAA-MM-JJ hh:mm. Vous pouvez définir la date de début sur la date actuelle ou une date ultérieure. La fenêtre sera créée dans le fuseau horaire fourni et ajustée à l’heure d’été en fonction de ce fuseau horaire.
properties.maintenanceWindow.timeZone Nom du fuseau horaire. Vous pouvez obtenir la liste des fuseaux horaires en exécutant [System.TimeZoneInfo] :GetSystemTimeZones() dans PowerShell. Exemple : Heure standard du Pacifique, UTC, W. Europe Standard Time, Corée Standard Time, Cen. Heure standard d’Australie de l’Est.
properties.namespace Obtient ou définit l’espace de noms de la ressource
properties.visibility Obtient ou définit la visibilité de la configuration. La valeur par défaut est « Custom »
systemData Métadonnées Azure Resource Manager contenant les informations createdBy et modifiedBy.
tags Obtient ou définit les étiquettes de la ressource
type Type de la ressource
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"

Associer une machine virtuelle à une planification

Pour associer une machine virtuelle à une planification de configuration de maintenance, spécifiez la requête PUT suivante :

PUT on `<ARC or Azure VM resourceId>/providers/Microsoft.Maintenance/configurationAssignments/<configurationAssignment name>?api-version=2021-09-01-preview`
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"

Supprimer l’ordinateur de la planification

Pour supprimer une machine de la planification, obtenez tous les noms d’affectation de configuration de l’ordinateur que vous avez créés pour associer la machine à la planification actuelle à partir d’Azure Resource Graph comme indiqué :

az maintenance configuration delete \
   --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"

Étapes suivantes