Partage via


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.