Partager via


Comment gérer par programmation les mises à jour pour les machines virtuelles Azure

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 votre machine virtuelle Azure avec le Gestionnaire de mise à jour Azure dans Azure. Si vous débutez avec le Gestionnaire de mise à jour et que vous souhaitez en savoir plus, consultez Vue d’ensemble du Gestionnaire de mise à jour Azure. Pour utiliser l’API REST Azure pour gérer les serveurs avec Arc, consultez Comment travailler par programmation avec des serveurs avec Arc.

Le Gestionnaire de mise à jour Azure 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 machines virtuelles Azure est disponible via l’extension de machine virtuelle Gestionnaire de mise à jour.

Update assessment (Évaluation des mises à jour)

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

POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.Compute/virtualMachines/virtualMachineName/assessPatches?api-version=2020-12-01`

Pour spécifier la requête POST, vous pouvez utiliser la commande Azure CLI az vm assess-patches.

az vm assess-patches -g MyResourceGroup -n MyVm

Déploiement de mises à jour

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

POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.Compute/virtualMachines/virtualMachineName/installPatches?api-version=2020-12-01`

Corps de la demande

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

Propriété Description
maximumDuration Durée maximale d’exécution de l’opération. Il doit s’agir d’une chaîne de durée conforme à ISO 8601, comme PT4H (4 heures).
rebootSetting Indicateur déterminant si la machine doit être redémarrée et si l’installation de la mise à jour du système d’exploitation invité le nécessite pour son achèvement. 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 virtuelles Azure exécutant un système d’exploitation Microsoft Windows Server pris en charge.
windowsParameters - classificationsToInclude Liste des catégories/classifications à utiliser pour sélectionner les mises à jour à installer sur l’machine. Les valeurs acceptables sont : Critical, Security, UpdateRollUp, FeaturePack, ServicePack, Definition, Tools, Updates
windowsParameters - kbNumbersToInclude Liste des ID de base de connaissances Windows Update qui doivent être installés. Toutes les mises à jour appartenant aux classifications fournies dans la liste classificationsToInclude seront installées. kbNumbersToInclude est une liste facultative de bases de connaissances spécifiques à installer en plus des classifications. Par exemple : 1234
windowsParameters - kbNumbersToExclude Liste des ID de base de connaissances Windows Update qui ne doivent pas être installés. Ce paramètre remplace windowsParameters - classificationsToInclude, ce qui signifie qu’un ID de base de connaissances Windows Update spécifié ici ne sera pas installé même s’il appartient à la classification fournie sous le paramètre classificationsToInclude.
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é sur les machines virtuelles Azure exécutant un système d’exploitation Linux pris en charge.
linuxParameters - classificationsToInclude Liste des catégories/classifications à utiliser pour sélectionner les mises à jour à installer sur l’machine. Les valeurs acceptables sont : Critical, Security, Other
linuxParameters - packageNameMasksToInclude Liste des packages Linux qui doivent être installés. Toutes les mises à jour appartenant aux classifications fournies dans la liste classificationsToInclude seront installées. packageNameMasksToInclude est une liste facultative de noms de package spécifiques à installer en plus des classifications. Par exemple : mysql, libc=1.0.1.1, kernel*
linuxParameters - packageNameMasksToExclude Liste des mises à jour qui ne doivent pas être installées. Ce paramètre remplace linuxParameters - packageNameMasksToExclude, ce qui signifie qu’un package spécifié ici ne sera pas installé même s’il appartient à la classification fournie sous le paramètre classificationsToInclude.

Pour spécifier la requête POST, vous pouvez utiliser l’appel d’API REST Azure suivant avec des paramètres et des valeurs valides.

POST on 'subscriptions/{subscriptionId}/resourceGroups/acmedemo/providers/Microsoft.Compute/virtualMachines/ameacr/installPatches?api-version=2020-12-01

{
    "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. La date d’expiration doit être fixée à une date ultérieure. Si vous ne l’indiquez pas, le paramètre est 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. Les planifications quotidiennes sont mises en forme sous la forme 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 planifications hebdomadaires sont mises en forme sous la forme recurEvery : [Frequency as integer][’Week(s)’] [Liste facultative séparée par des virgules des jours de semaine Monday-Sunday]. Voici des exemples de planifications hebdomadaires : recurEvery : 3Weeks, recurEvery : Week Saturday, Sunday. Les planifications mensuelles sont mises en forme 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

Pour spécifier la requête POST, vous pouvez utiliser l’appel d’API REST Azure suivant avec des paramètres et des valeurs valides.

PUT on '/subscriptions/0f55bb56-6089-4c7e-9306-41fb78fc5844/resourceGroups/atscalepatching/providers/Microsoft.Maintenance/maintenanceConfigurations/TestAzureInGuestAdv2?api-version=2021-09-01-preview

{
  "location": "eastus2euap",
  "properties": {
    "namespace": null,
    "extensionProperties": {
      "InGuestPatchMode" : "User"
    },
    "maintenanceScope": "InGuestPatch",
    "maintenanceWindow": {
      "startDateTime": "2021-08-21 01:18",
      "expirationDateTime": "2221-05-19 03:30",
      "duration": "01:30",
      "timeZone": "India Standard Time",
      "recurEvery": "Day"
    },
    "visibility": "Custom",
    "installPatches": {
      "rebootSetting": "IfRequired",
      "windowsParameters": {
        "classificationsToInclude": [
          "Security",
          "Critical",
          "UpdateRollup"
        ]
      },
      "linuxParameters": {
        "classificationsToInclude": [
          "Other"
        ]
      }
    }
  }
}'

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`

Pour spécifier la requête PUT, vous pouvez utiliser l’appel d’API REST Azure suivant avec des paramètres et des valeurs valides.

PUT on '/subscriptions/0f55bb56-6089-4c7e-9306-41fb78fc5844/resourceGroups/atscalepatching/providers/Microsoft.Compute/virtualMachines/win-atscalepatching-1/providers/Microsoft.Maintenance/configurationAssignments/TestAzureInGuestAdv?api-version=2021-09-01-preview

{
  "properties": {
    "maintenanceConfigurationId": "/subscriptions/0f55bb56-6089-4c7e-9306-41fb78fc5844/resourcegroups/atscalepatching/providers/Microsoft.Maintenance/maintenanceConfigurations/TestAzureInGuestIntermediate2"
  },
  "location": "eastus2euap"
}'

Supprimer l’ordinateur de la planification

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

maintenanceresources
| where type =~ "microsoft.maintenance/configurationassignments"
| where properties.maintenanceConfigurationId =~ "<maintenance configuration Resource ID>"
| where properties.resourceId =~ "<Machine Resource Id>"
| project name, id

Après avoir obtenu le nom ci-dessus, supprimez l’affectation de configuration en suivant la demande DELETE -

DELETE on `<ARC or Azure VM resourceId>/providers/Microsoft.Maintenance/configurationAssignments/<configurationAssignment name>?api-version=2021-09-01-preview`

Étapes suivantes