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

La création d'une configuration de maintenance vous permet de décider quand appliquer les mises à jour de la plate-forme à diverses ressources Azure. Cette rubrique 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 des configurations de maintenance, les limitations et les autres options de gestion, consultez Gestion des mises à jour de plateformes avec les configurations de maintenance.

Si vous recherchez des informations sur les configurations de maintenance des groupes identiques, consultez Contrôle de maintenance pour les groupes de machines virtuelles identiques.

Important

Il existe différentes étendues qui prennent en charge certains types de machine et de planification. Par conséquent, assurez-vous de sélectionner l’étendue appropriée pour votre machine virtuelle.

Activer le module PowerShell

Vérifiez que PowerShellGet est à jour.

Install-Module -Name PowerShellGet -Repository PSGallery -Force

Installez le module PowerShell Az.Maintenance.

Install-Module -Name Az.Maintenance

Vérifiez que vous exécutez la dernière version du module PowerShell 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 en utilisant

Import-Module -Name Az.Maintenance -RequiredVersion 1.2.0

Si vous installez localement, veillez à ouvrir votre invite PowerShell en tant qu’administrateur.

Vous pouvez également être invité à confirmer que vous souhaitez installer à partir d’un référentiel non approuvé. Tapez Y 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. Dans cet exemple, un groupe de ressources nommé myMaintenanceRG est créé 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. Une fois que vous aurez créé une fenêtre planifiée, vous n’aurez plus besoin d’appliquer les mises à jour manuellement. La récurrence de la maintenance peut être exprimée quotidiennement, hebdomadairement ou mensuellement. Quelques exemples :

  • quotidiennement : RecurEvery « Jour » ou « 3Jours »
  • hebdomadairement : RecurEvery « 3Jours » ou « Semaine samedi,dimanche »
  • mensuellement : RecurEvery « Lundi jour23,jour24 » ou « Mois Dernier dimanche » ou « Mois Quatrième lundi »

Host

Cet exemple crée une configuration de maintenance nommée myConfig étendue à l’hôte, avec une fenêtre planifiée de 5 heures, le quatrième lundi de chaque mois. Il est important de noter que la durée de la planification pour cette étendue doit être d’au moins deux heures. Pour commencer, vous devez définir tous les paramètres nécessaires pour 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"

Une fois que vous avez 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. Vous devez vérifier que vous créez une configuration pour l’étendue spécifique des machines que vous ciblez. Pour en savoir plus sur les étendues, consultez les étendues de configuration de maintenance.

Image du système d’exploitation

Dans cet exemple, nous allons créer une configuration de maintenance nommée myConfig étendue à osimage avec une fenêtre planifiée de 8 heures tous les 5 jours. Il est important de noter que la durée de la planification pour cette étendue doit être d’au moins 5 heures. Une autre différence majeure à noter est que 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"

Une fois que vous avez 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é

Notre ajout le plus récent à l’offre de configuration de maintenance est l’étendue InGuestPatch. Cet exemple montre comment créer une configuration de maintenance pour l’étendue Invité à l’aide de PowerShell. Pour en savoir plus 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";

Une fois que vous avez 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 à l’aide de Get-AzMaintenanceConfiguration.

Get-AzMaintenanceConfiguration | Format-Table -Property Name,Id

Affecter la configuration

Une fois que vous avez créé votre configuration, vous pouvez également lui affecter des machines à l’aide de PowerShell. Pour cela, nous allons utiliser New-AzConfigurationAssignment.

Machine virtuelle isolée

Attribuez la configuration à une machine virtuelle à l’aide de l’ID de la configuration. Spécifiez -ResourceType VirtualMachines et fournissez 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 aussi 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"

Virtual Machine Scale Sets

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

Utilisez Get-AzMaintenanceUpdate pour voir s’il existe des mises à jour en attente. 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 mise en forme en tant que 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 mise en forme en tant que tableau pour faciliter la lecture.

Get-AzMaintenanceUpdate `
   -ResourceGroupName "myResourceGroup" `
   -ResourceName "myHost" `
   -ResourceType "hosts" `
   -ResourceParentName "myHostGroup" `
   -ResourceParentType "hostGroups" `
   -ProviderName "Microsoft.Compute" | Format-Table

Virtual Machine Scale Sets

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 Hôte et OSImage. Elle ne fonctionne PAS pour l’étendue Invité.

Machine virtuelle isolée

Créez une demande d’application des 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 de la mise à jour. Consultez Vérifier l’état des mises à jour.

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

Virtual Machine Scale Sets

New-AzApplyUpdate `
   -ResourceGroupName "myResourceGroup" `
   -Location "eastus" `
   -ResourceName "myVMSS" `
   -ResourceType "VirtualMachineScaleSets" `
   -ProviderName "Microsoft.Compute"

Vérifier l’état de la mise à jour

Utilisez Get-AzApplyUpdate pour vérifier l’état d’une mise à jour. Les commandes indiquées ci-dessous indiquent l’état de la dernière mise à jour à l’aide de default pour le 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 Hôte et OSImage. Elle ne fonctionne PAS pour l’étendue 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 correspond à l’heure à laquelle la mise à jour est terminée, soit à votre initiative, soit à celle de la plateforme au cas où la fenêtre d’automaintenance n’aurait pas été utilisée. Si aucune mise à jour n’a jamais été appliquée par le biais de configurations de maintenance, la valeur par défaut s’affiche.

Machine virtuelle isolée

Recherchez les mises à jour d’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 d’un hôte dédié.

Get-AzApplyUpdate `
   -ResourceGroupName "myResourceGroup" `
   -ResourceName "myHost" `
   -ResourceType "hosts" `
   -ResourceParentName "myHostGroup" `
   -ResourceParentType "hostGroups" `
   -ProviderName "Microsoft.Compute" `
   -ApplyUpdateName "applyUpdateName"

Virtual Machine Scale Sets

New-AzApplyUpdate `
   -ResourceGroupName "myResourceGroup" `
   -Location "eastus" `
   -ResourceName "myVMSS" `
   -ResourceType "VirtualMachineScaleSets" `
   -ProviderName "Microsoft.Compute" `
   -ApplyUpdateName "applyUpdateName"

Supprimer une configuration de maintenance

Utilisez Remove-AzMaintenanceConfiguration pour supprimer une configuration de maintenance.

Remove-AzMaintenanceConfiguration `
   -ResourceGroupName "myResourceGroup" `
   -Name "configName"

Étapes suivantes

Pour plus d’informations, consultez Maintenance et mises à jour.