Steuern von Updates mit Wartungskonfigurationen und Azure PowerShell
Gilt für: ✔️ Linux-VMs ✔️ Windows-VMs ✔️ Flexible Skalierungsgruppen ✔️ Einheitliche Skalierungsgruppen
Sie können das Feature für Wartungskonfigurationen verwenden, um zu steuern, wann Plattformupdates auf verschiedene Azure-Ressourcen angewendet werden. In diesem Artikel werden die Azure PowerShell-Optionen für Dedicated Hosts und isolierte VMs behandelt. Weitere Informationen zu den Vorteilen der Verwendung des Features „Wartungskonfigurationen“, zu ihren Einschränkungen und zu anderen Verwaltungsoptionen finden Sie unter Verwalten von Plattformupdates mit Wartungskonfigurationen.
Informationen zur Verwendung von Wartungskonfigurationen für Skalierungsgruppen finden Sie unter Wartungssteuerung für Azure VM-Skalierungsgruppen.
Wichtig
Bestimmte Bereiche unterstützen bestimmte Computertypen und -zeitpläne. Achten Sie darauf, den richtigen Bereich für Ihren virtuellen Computer auszuwählen.
Das Azure PowerShell-Modul aktivieren
Stellen Sie sicher, dass PowerShellGet
auf dem neuesten Stand ist:
Install-Module -Name PowerShellGet -Repository PSGallery -Force
Installieren Sie das Az.Maintenance
-Modul von Azure PowerShell.
Install-Module -Name Az.Maintenance
Stellen Sie sicher, dass die neueste Version von Az.Maintenance
(Version 1.2.0) ausgeführt wird.
Get-Module -ListAvailable -Name Az.Maintenance
Stellen Sie sicher, dass Sie die richtige Version von Az.Maintenance
ausführen.
Import-Module -Name Az.Maintenance -RequiredVersion 1.2.0
Wenn Sie lokal installieren, müssen Sie die Azure PowerShell-Eingabeaufforderung als Administrator öffnen.
Möglicherweise werden Sie auch aufgefordert zu bestätigen, dass Sie aus einem nicht vertrauenswürdigen Repository installieren möchten. Geben Sie J ein, oder wählen Sie Ja, alle aus, um das Modul zu installieren.
Erstellen einer Wartungskonfiguration
Der erste Schritt zur Erstellung einer Wartungskonfiguration ist das Erstellen einer Ressourcengruppe als Container für Ihre Konfiguration. In diesem Beispiel wird eine Ressourcengruppe mit dem Namen myMaintenanceRG in eastus erstellt. Wenn Sie bereits über eine Ressourcengruppe verfügen, die Sie verwenden möchten, können Sie diesen Teil überspringen und den Ressourcengruppennamen in den restlichen Beispielen durch Ihren eigenen ersetzen.
New-AzResourceGroup `
-Location eastus `
-Name myMaintenanceRG
Sie können ein geplantes Fenster deklarieren, in dem Azure die Updates regelmäßig auf Ihre Ressourcen anwendet. Nachdem Sie ein geplantes Fenster erstellt haben, müssen Sie die Updates nicht mehr manuell anwenden.
Sie können die Wiederholung der Wartung täglich, wöchentlich oder monatlich ausdrücken. Im Folgenden finden Sie einige Beispiele:
- Täglich: ein
RecurEvery
-Wert von"Day"
oder"3Days"
. - Wöchentlich: ein
RecurEvery
-Wert von"3Weeks"
oder"Week Saturday,Sunday"
. - Monatlich: ein
RecurEvery
-Wert von"Month day23,day24"
oder"Month Last Sunday"
oder"Month Fourth Monday"
.
Host
In diesem Beispiel wird eine Wartungskonfiguration mit dem Namen myConfig mit dem Bereich Host
mit einem geplanten Fenster von 5 Stunden am vierten Montag jedes Monats erstellt. Der duration
-Wert des Zeitplans für diesen Bereich sollte mindestens zwei Stunden betragen. Definieren Sie zu Beginn die Parameter für 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"
Nachdem Sie die Parameter definiert haben, können Sie das Cmdlet New-AzMaintenanceConfiguration
verwenden, um Ihre Konfiguration zu erstellen:
New-AzMaintenanceConfiguration
-ResourceGroup $RGName `
-Name $configName `
-MaintenanceScope $scope `
-Location $location `
-StartDateTime $startDateTime `
-TimeZone $timeZone `
-Duration $duration `
-RecurEvery $recurEvery
Durch die Verwendung von $scope = "Host"
wird sichergestellt, dass die Wartungskonfiguration zum Steuern von Updates auf Hostcomputern verwendet wird. Achten Sie darauf, eine Konfiguration für den spezifischen Bereich der Zielcomputer zu erstellen. Erfahren Sie mehr über Bereiche.
Betriebssystemabbild
In diesem Beispiel erstellen Sie eine Wartungskonfiguration mit dem Namen myConfig im Bereich osimage
mit einem geplanten Fenster von 8 Stunden alle 5 Tage. Der duration
-Wert des Zeitplans für diesen Bereich sollte mindestens 5 Stunden betragen. Dieser Bereich ermöglicht maximal 7 Tage für die Zeitplanserie.
$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "osimage"
$location = "eastus"
$timeZone = "Pacific Standard Time"
$duration = "08:00"
$startDateTime = "2022-11-01 00:00"
$recurEvery = "5days"
Nachdem Sie die Parameter definiert haben, können Sie das Cmdlet New-AzMaintenanceConfiguration
verwenden, um Ihre Konfiguration zu erstellen:
New-AzMaintenanceConfiguration
-ResourceGroup $RGName `
-Name $configName `
-MaintenanceScope $scope `
-Location $location `
-StartDateTime $startDateTime `
-TimeZone $timeZone `
-Duration $duration `
-RecurEvery $recurEvery
Gast
Die neueste Ergänzung des Wartungskonfigurationsfeatures ist der Bereich InGuestPatch
. In diesem Beispiel wird gezeigt, wie Sie mithilfe von Azure PowerShell eine Wartungskonfiguration für einen Gastbereich erstellen. Weitere Informationen zu diesem Bereich finden Sie unter Gast.
$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";
Nachdem Sie die Parameter definiert haben, können Sie das Cmdlet New-AzMaintenanceConfiguration
verwenden, um Ihre Konfiguration zu erstellen:
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"}
Wenn Sie versuchen, eine Konfiguration mit demselben Namen, aber an einem anderen Speicherort zu erstellen, erhalten Sie eine Fehlermeldung. Konfigurationsnamen müssen für Ihre Ressourcengruppe eindeutig sein.
Sie können mithilfe von Get-AzMaintenanceConfiguration überprüfen, ob Sie die Wartungskonfigurationen erfolgreich erstellt haben.
Get-AzMaintenanceConfiguration | Format-Table -Property Name,Id
Zuweisen der Konfiguration
Nachdem Sie Ihre Konfiguration erstellt haben, können Sie ihr auch mithilfe von Azure PowerShell Computer zuweisen. Sie können das Cmdlet New-AzConfigurationAssignment verwenden.
Isolierte VM
Weisen Sie einem virtuellen Computer die Konfiguration anhand der ID zu. Geben Sie -ResourceType VirtualMachines
an. Geben Sie den Namen der VM für -ResourceName
an, und geben Sie die Ressourcengruppe der VM für -ResourceGroupName
an.
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
Dedicated Host
Wenn Sie eine Konfiguration auf einen dedizierten Host anwenden möchten, müssen Sie -ResourceType hosts
, -ResourceParentName
mit dem Namen der Hostgruppe und -ResourceParentType hostGroups
einschließen:
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName myHostGroup `
-ResourceParentType hostGroups `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
VM-Skalierungsgruppen
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
Gast
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myGuest" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
Prüfen auf ausstehende Updates
Verwenden Sie zur Überprüfung auf ausstehende Updates Get-AzMaintenanceUpdate. Verwenden Sie -subscription
, um das Azure-Abonnement der VM anzugeben, wenn diese nicht der Computer ist, bei dem Sie sich angemeldet haben.
Wenn keine Updates zum Anzeigen vorhanden sind, gibt dieser Befehl keinen Wert zurück. Andernfalls wird ein PSApplyUpdate
-Objekt zurückgegeben:
{
"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"
}
Isolierte VM
Überprüfen Sie, ob für eine isolierte VM ausstehende Updates angezeigt werden. In diesem Beispiel ist die Ausgabe zur besseren Lesbarkeit als Tabelle formatiert:
Get-AzMaintenanceUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" | Format-Table
Dedicated Host
Überprüfen Sie, ob für einen dedizierten Host Updates ausstehen. In diesem Beispiel ist die Ausgabe zur besseren Lesbarkeit als Tabelle formatiert:
Get-AzMaintenanceUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName "myHostGroup" `
-ResourceParentType "hostGroups" `
-ProviderName "Microsoft.Compute" | Format-Table
VM-Skalierungsgruppen
Get-AzMaintenanceUpdate `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute" | Format-Table
Anwenden von Updates
Verwenden Sie New-AzApplyUpdate, um ausstehende Updates anzuwenden. Das Anwenden von Updateaufrufen kann bis zu 2 Stunden dauern.
Dieses Cmdlet funktioniert nur für die Host- und Betriebssystemimagebereiche. Es funktioniert nicht für den Gastbereich.
Isolierte VM
Erstellen Sie eine Anforderung, um Updates auf eine isolierte VM anzuwenden.
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute"
Bei einer erfolgreichen Ausführung gibt dieser Befehl ein PSApplyUpdate
-Objekt zurück. Sie können das Name
-Attribut im Get-AzApplyUpdate
-Befehl verwenden, um den Aktualisierungsstatus zu überprüfen, wie weiter unten in diesem Artikel beschrieben.
Dedicated Host
Wenden Sie Updates auf einen dedizierten Host an:
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName "myHostGroup" `
-ResourceParentType "hostGroups" `
-ProviderName Microsoft.Compute
VM-Skalierungsgruppen
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute"
Überprüfen des Updatestatus
Verwenden Sie Get-AzApplyUpdate, um den Status eines Updates zu überprüfen. Die folgenden Befehle zeigen den Status des neuesten Updates mithilfe von default
für den Parameter -ApplyUpdateName
an. Sie können den Namen des Updates ersetzen (vom Befehl New-AzApplyUpdate zurückgegeben), um den Status eines bestimmten Updates zu erhalten.
Dieses Cmdlet funktioniert nur für die Host- und Betriebssystemimagebereiche. Es funktioniert nicht für den Gastbereich.
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
ist der Zeitpunkt, zu dem das Update abgeschlossen ist, unabhängig davon, ob Sie das Update oder die Plattform initiiert haben, da Sie das Selbstwartungsfenster nicht verwendet haben. Wenn noch nie über Wartungskonfigurationen ein Update anwendet wurde, zeigt LastUpdateTime
den Standardwert an.
Isolierte VM
Suchen Sie nach Updates für einen bestimmten virtuellen Computer:
Get-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" `
-ApplyUpdateName "applyUpdateName"
Dedicated Host
Suchen Sie nach Updates für einen dedizierten Host:
Get-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName "myHostGroup" `
-ResourceParentType "hostGroups" `
-ProviderName "Microsoft.Compute" `
-ApplyUpdateName "applyUpdateName"
VM-Skalierungsgruppen
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute" `
-ApplyUpdateName "applyUpdateName"
Löschen einer Wartungskonfiguration
Verwenden Sie Remove-AzMaintenanceConfiguration, um eine Wartungskonfiguration zu löschen.
Remove-AzMaintenanceConfiguration `
-ResourceGroupName "myResourceGroup" `
-Name "configName"
Nächste Schritte
Weitere Informationen finden Sie unter Wartung für virtuelle Computer in Azure.