Contrôler les mises à jour avec les configurations de maintenance et Azure PowerShell
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 couvre les options Azure PowerShell pour les hôtes dédiés et les machines virtuelles isolées. Pour plus d’informations sur les avantages de l’utilisation de la fonctionnalité Configurations de maintenance, les limitations et les autres options de gestion, consultez Gestion des mises à jour de plateformes avec Configurations de maintenance.
Si vous recherchez des informations sur l’utilisation de la fonctionnalité Configurations de maintenance pour les groupes identiques, consultez Contrôle de maintenance pour les groupes de machines virtuelles identiques Azure.
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.
Activer le module Azure PowerShell
Vérifiez que PowerShellGet
est à jour :
Install-Module -Name PowerShellGet -Repository PSGallery -Force
Installez le module Azure PowerShell Az.Maintenance
:
Install-Module -Name Az.Maintenance
Veillez à exécuter la dernière version de Az.Maintenance
(version 1.2.0) :
Get-Module -ListAvailable -Name Az.Maintenance
Vérifiez que vous exécutez la version appropriée de Az.Maintenance
:
Import-Module -Name Az.Maintenance -RequiredVersion 1.2.0
Si vous effectuez une installation locale, veillez à ouvrir votre invite Azure PowerShell en tant qu’administrateur.
Vous pouvez être invité à confirmer que vous souhaitez effectuer l’installation à partir d’un référentiel non approuvé. Entrez O ou sélectionnez Oui pour tout afin d’installer le module.
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.
New-AzResourceGroup `
-Location eastus `
-Name myMaintenanceRG
Vous pouvez déclarer une fenêtre planifiée quand Azure applique les mises à jour de manière récurrente sur vos ressources. Après avoir créé une fenêtre planifiée, vous n’avez plus besoin d’appliquer les mises à jour manuellement.
Vous pouvez exprimer une périodicité de maintenance de manière quotidienne, hebdomadaire ou mensuelle. Voici quelques exemples :
- Quotidienne : une valeur
RecurEvery
de"Day"
ou"3Days"
. - Hebdomadaire : une valeur
RecurEvery
de"3Weeks"
ou"Week Saturday,Sunday"
. - Mensuelle : une valeur
RecurEvery
de"Month day23,day24"
,"Month Last Sunday"
ou"Month Fourth Monday"
.
Hôte
Cet exemple crée une configuration de maintenance nommée myConfig étendue à Host
, avec une fenêtre planifiée de 5 heures, le quatrième lundi de chaque mois. La valeur duration
de la planification pour cette étendue doit être d’au moins deux heures. Pour commencer, définissez les paramètres de New-AzMaintenanceConfiguration
:
$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "Host"
$location = "eastus"
$timeZone = "Pacific Standard Time"
$duration = "05:00"
$startDateTime = "2022-11-01 00:00"
$recurEvery = "Month Fourth Monday"
Après avoir défini les paramètres, vous pouvez utiliser l’applet de commande New-AzMaintenanceConfiguration
pour créer votre configuration :
New-AzMaintenanceConfiguration
-ResourceGroup $RGName `
-Name $configName `
-MaintenanceScope $scope `
-Location $location `
-StartDateTime $startDateTime `
-TimeZone $timeZone `
-Duration $duration `
-RecurEvery $recurEvery
L’utilisation de $scope = "Host"
garantit l’utilisation de la configuration de maintenance pour contrôler les mises à jour sur les machines hôtes. Veillez à créer une configuration pour l’étendue spécifique des machines que vous ciblez. Découvrez-en plus sur les étendues.
image du système d'exploitation
Cet exemple crée une configuration de maintenance nommée myConfig étendue à osimage
avec une fenêtre planifiée de 8 heures tous les 5 jours. La valeur duration
de la planification pour cette étendue doit être d’au moins 5 heures. Cette étendue autorise un maximum de 7 jours pour la périodicité de la planification.
$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "osimage"
$location = "eastus"
$timeZone = "Pacific Standard Time"
$duration = "08:00"
$startDateTime = "2022-11-01 00:00"
$recurEvery = "5days"
Après avoir défini les paramètres, vous pouvez utiliser l’applet de commande New-AzMaintenanceConfiguration
pour créer votre configuration :
New-AzMaintenanceConfiguration
-ResourceGroup $RGName `
-Name $configName `
-MaintenanceScope $scope `
-Location $location `
-StartDateTime $startDateTime `
-TimeZone $timeZone `
-Duration $duration `
-RecurEvery $recurEvery
Invité
L’ajout le plus récent à la fonctionnalité Configurations de maintenance est l’étendue InGuestPatch
. Cet exemple montre comment créer une configuration de maintenance pour une étendue d’invité avec Azure PowerShell. Pour plus d’informations sur cette étendue, consultez Invité.
$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "InGuestPatch"
$location = "eastus"
$timeZone = "Pacific Standard Time"
$duration = "04:00"
$startDateTime = "2022-11-01 00:00"
$recurEvery = "Week Saturday, Sunday"
$WindowsParameterClassificationToInclude = "FeaturePack","ServicePack";
$WindowParameterKbNumberToInclude = "KB123456","KB123466";
$WindowParameterKbNumberToExclude = "KB123456","KB123466";
$RebootOption = "IfRequired";
$LinuxParameterClassificationToInclude = "Other";
$LinuxParameterPackageNameMaskToInclude = "apt","httpd";
$LinuxParameterPackageNameMaskToExclude = "ppt","userpk";
Après avoir défini les paramètres, vous pouvez utiliser l’applet de commande New-AzMaintenanceConfiguration
pour créer votre configuration :
New-AzMaintenanceConfiguration
-ResourceGroup $RGName `
-Name $configName `
-MaintenanceScope $scope `
-Location $location `
-StartDateTime $startDateTime `
-TimeZone $timeZone `
-Duration $duration `
-RecurEvery $recurEvery `
-WindowParameterClassificationToInclude $WindowsParameterClassificationToInclude `
-WindowParameterKbNumberToInclude $WindowParameterKbNumberToInclude `
-WindowParameterKbNumberToExclude $WindowParameterKbNumberToExclude `
-InstallPatchRebootSetting $RebootOption `
-LinuxParameterPackageNameMaskToInclude $LinuxParameterPackageNameMaskToInclude `
-LinuxParameterClassificationToInclude $LinuxParameterClassificationToInclude `
-LinuxParameterPackageNameMaskToExclude $LinuxParameterPackageNameMaskToExclude `
-ExtensionProperty @{"InGuestPatchMode"="User"}
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 correctement créé les configurations de maintenance en utilisant Get-AzMaintenanceConfiguration :
Get-AzMaintenanceConfiguration | Format-Table -Property Name,Id
Affecter la configuration
Après avoir créé votre configuration, vous pouvez également lui affecter des machines en utilisant PowerShell. Vous pouvez utiliser l’applet de commande New-AzConfigurationAssignment.
Machine virtuelle isolée
Attribuez la configuration à une machine virtuelle à l’aide de l’ID de la configuration. Spécifier -ResourceType VirtualMachines
. Indiquez le nom de la machine virtuelle pour -ResourceName
et le groupe de ressources de la machine virtuelle pour -ResourceGroupName
.
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
Hôte dédié
Pour appliquer une configuration à un hôte dédié, vous devez inclure -ResourceType hosts
, -ResourceParentName
avec le nom du groupe hôte et -ResourceParentType hostGroups
:
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName myHostGroup `
-ResourceParentType hostGroups `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
Groupes de machines virtuelles identiques
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
Invité
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myGuest" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
Rechercher les mises à jour en attente
Pour vérifier les mises à jour en attente, utilisez Get-AzMaintenanceUpdate. Utilisez -subscription
pour spécifier l’abonnement Azure de la machine virtuelle s’il est différent de celui auquel vous êtes connecté.
S’il n’y a aucune mise à jour à afficher, cette commande ne retourne rien. Sinon, elle retourne un objet PSApplyUpdate
:
{
"maintenanceScope": "Host",
"impactType": "Freeze",
"status": "Pending",
"impactDurationInSec": 9,
"notBefore": "2020-02-21T16:47:44.8728029Z",
"properties": {
"resourceId": "/subscriptions/39c6cced-4d6c-4dd5-af86-57499cd3f846/resourcegroups/Ignite2019/providers/Microsoft.Compute/virtualMachines/MCDemo3"
}
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 :
Get-AzMaintenanceUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" | Format-Table
Hôte dédié
Recherchez les mises à jour en attente pour un hôte dédié. Dans cet exemple, la sortie est présentée sous forme de tableau pour faciliter la lecture :
Get-AzMaintenanceUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName "myHostGroup" `
-ResourceParentType "hostGroups" `
-ProviderName "Microsoft.Compute" | Format-Table
Groupes de machines virtuelles identiques
Get-AzMaintenanceUpdate `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute" | Format-Table
Appliquer des mises à jour
Utilisez New-AzApplyUpdate pour appliquer les mises à jour en attente. L’application des appels de mise à jour peut prendre jusqu’à 2 heures.
Cette applet de commande fonctionne uniquement pour les étendues d’image de système d’exploitation et d’hôte. Elle ne fonctionne pas pour l’étendue d’invité.
Machine virtuelle isolée
Créez une requête pour appliquer les mises à jour à une machine virtuelle isolée :
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute"
En cas de réussite, cette commande retourne un objet PSApplyUpdate
. Vous pouvez utiliser l’attribut Name
dans la commande Get-AzApplyUpdate
pour vérifier l’état des mises à jour, comme décrit plus loin dans cet article.
Hôte dédié
Appliquez les mises à jour à un hôte dédié :
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName "myHostGroup" `
-ResourceParentType "hostGroups" `
-ProviderName Microsoft.Compute
Groupes de machines virtuelles identiques
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute"
Vérifier l’état de la mise à jour
Pour vérifier l’état d’une mise à jour, utilisez Get-AzApplyUpdate. Les commandes suivantes indiquent l’état de la dernière mise à jour avec default
comme paramètre -ApplyUpdateName
. Vous pouvez remplacer le nom de la mise à jour (retourné par la commande New-AzApplyUpdate) pour obtenir l’état d’une mise à jour spécifique.
Cette applet de commande fonctionne uniquement pour les étendues d’image de système d’exploitation et d’hôte. Elle ne fonctionne pas pour l’étendue d’invité.
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 d’automaintenance. 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
Recherchez les mises à jour apportées à une machine virtuelle spécifique :
Get-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" `
-ApplyUpdateName "applyUpdateName"
Hôte dédié
Recherchez les mises à jour apportées à un hôte dédié :
Get-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName "myHostGroup" `
-ResourceParentType "hostGroups" `
-ProviderName "Microsoft.Compute" `
-ApplyUpdateName "applyUpdateName"
Groupes de machines virtuelles identiques
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute" `
-ApplyUpdateName "applyUpdateName"
Supprimer une configuration de maintenance
Pour supprimer une configuration de maintenance, utilisez Remove-AzMaintenanceConfiguration :
Remove-AzMaintenanceConfiguration `
-ResourceGroupName "myResourceGroup" `
-Name "configName"
Étapes suivantes
Pour obtenir plus d’informations, consultez Maintenance des machines virtuelles dans Azure.