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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/atscalepatching/providers/Microsoft.Compute/virtualMachines/win-atscalepatching-1/providers/Microsoft.Maintenance/configurationAssignments/TestAzureInGuestAdv?api-version=2021-09-01-preview
{
"properties": {
"maintenanceConfigurationId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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
- Pour afficher les journaux d’évaluation et de déploiement des mises à jour générés par le Gestionnaire de mise à jour, consultez les journaux de requête.
- Pour résoudre les problèmes, consultez Résoudre les problèmes liés au Gestionnaire de mise à jour.