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.