Kontrolowanie aktualizacji za pomocą konfiguracji konserwacji i Azure PowerShell

Dotyczy: ✔️ Maszyny wirtualne z systemem Linux Maszyny ✔️ wirtualne z systemem Windows — elastyczne zestawy ✔️ ✔️ skalowania

Tworzenie konfiguracji konserwacji pozwala zdecydować, kiedy należy zastosować aktualizacje platformy do różnych zasobów platformy Azure. W tym temacie opisano opcje Azure PowerShell dla dedykowanych hostów i izolowanych maszyn wirtualnych. Aby uzyskać więcej informacji na temat korzyści związanych z używaniem konfiguracji konserwacji, jej ograniczeń i innych opcji zarządzania, zobacz Zarządzanie aktualizacjami platformy przy użyciu konfiguracji konserwacji.

Jeśli szukasz informacji na temat konfiguracji konserwacji zestawów skalowania, zobacz Kontrola konserwacji dla Virtual Machine Scale Sets.

Ważne

Istnieją różne zakresy , które obsługują określone typy maszyn i harmonogramy, dlatego upewnij się, że wybierasz odpowiedni zakres dla maszyny wirtualnej.

Włączanie modułu programu PowerShell

Upewnij się, że jest PowerShellGet aktualna.

Install-Module -Name PowerShellGet -Repository PSGallery -Force

Az.Maintenance Zainstaluj moduł programu PowerShell.

Install-Module -Name Az.Maintenance

Sprawdź, czy korzystasz z najnowszej wersji modułu Az.Maintenance programu PowerShell (wersja 1.2.0)

Get-Module -ListAvailable -Name Az.Maintenance

Upewnij się, że używasz odpowiedniej wersji Az.Maintenance

Import-Module -Name Az.Maintenance -RequiredVersion 1.2.0

Jeśli instalujesz lokalnie, upewnij się, że zostanie otwarty monit programu PowerShell jako administrator.

Może zostać również wyświetlony monit o potwierdzenie, że chcesz zainstalować z niezaufanego repozytorium. Wpisz Y lub wybierz pozycję Tak do pozycji Wszystkie , aby zainstalować moduł.

Utworzenie konfiguracji konserwacji

Pierwszym krokiem do utworzenia konfiguracji konserwacji jest utworzenie grupy zasobów jako kontenera dla konfiguracji. W tym przykładzie w eastus zostanie utworzona grupa zasobów o nazwie myMaintenanceRG. Jeśli masz już grupę zasobów, której chcesz użyć, możesz pominąć tę część i zastąpić nazwę grupy zasobów własną nazwą w pozostałych przykładach.

New-AzResourceGroup `
   -Location eastus `
   -Name myMaintenanceRG

Zaplanowane okno można zadeklarować, gdy platforma Azure będzie cyklicznie stosować aktualizacje zasobów. Po utworzeniu zaplanowanego okna nie trzeba już stosować aktualizacji ręcznie. Cykl konserwacji może być wyrażony jako codziennie, co tydzień lub co miesiąc. Przykłady to:

  • daily— RecurEvery "Day" lub "3Days"
  • weekly - RecurEvery "3Weeks" lub "Tydzień sobota,niedziela"
  • monthly — RecurEvery "Month day23,day24" lub "Month Last Sunday" lub "Month Fourth Monday" (Miesiąc czwarty poniedziałek)

Host

W tym przykładzie tworzona jest konfiguracja konserwacji o nazwie myConfig o zakresie hostowania z zaplanowanym oknem 5 godzin w czwarty poniedziałek każdego miesiąca. Należy pamiętać, że czas trwania harmonogramu dla tego zakresu powinien wynosić co najmniej dwie godziny. Aby rozpocząć, należy zdefiniować wszystkie parametry wymagane do 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"

Po zdefiniowaniu parametrów możesz teraz utworzyć konfigurację za New-AzMaintenanceConfiguration pomocą polecenia cmdlet .

New-AzMaintenanceConfiguration
   -ResourceGroup $RGName `
   -Name $configName `
   -MaintenanceScope $scope `
   -Location $location `
   -StartDateTime $startDateTime `
   -TimeZone $timeZone `
   -Duration $duration `
   -RecurEvery $recurEvery

Dzięki temu $scope = "Host" konfiguracja konserwacji jest używana do kontrolowania aktualizacji na maszynach hosta. Musisz upewnić się, że tworzysz konfigurację dla określonego zakresu docelowych maszyn. Aby dowiedzieć się więcej na temat zakresów, zapoznaj się z zakresami konfiguracji konserwacji.

Obraz systemu operacyjnego

W tym przykładzie utworzymy konfigurację konserwacji o nazwie myConfig o zakresie osimage z zaplanowanym oknem 8 godzin co 5 dni. Należy pamiętać, że czas trwania harmonogramu dla tego zakresu powinien wynosić co najmniej 5 godzin. Kolejną kluczową różnicą jest to, że ten zakres pozwala maksymalnie 7 dni na cykl harmonogramu.

$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "osimage"
$location = "eastus"
$timeZone = "Pacific Standard Time" 
$duration = "08:00"
$startDateTime = "2022-11-01 00:00"
$recurEvery = "5days"

Po zdefiniowaniu parametrów możesz teraz utworzyć konfigurację za New-AzMaintenanceConfiguration pomocą polecenia cmdlet .

New-AzMaintenanceConfiguration
   -ResourceGroup $RGName `
   -Name $configName `
   -MaintenanceScope $scope `
   -Location $location `
   -StartDateTime $startDateTime `
   -TimeZone $timeZone `
   -Duration $duration `
   -RecurEvery $recurEvery

Gość

Naszym najnowszym dodatkiem do oferty konfiguracji konserwacji jest zakres InGuestPatch . W tym przykładzie pokazano, jak utworzyć konfigurację konserwacji dla zakresu gościa przy użyciu programu PowerShell. Aby dowiedzieć się więcej o tym zakresie, zobacz Gość.

$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";

Po zdefiniowaniu parametrów możesz teraz utworzyć konfigurację za New-AzMaintenanceConfiguration pomocą polecenia cmdlet .

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"}

Jeśli spróbujesz utworzyć konfigurację o tej samej nazwie, ale w innej lokalizacji wystąpi błąd. Nazwy konfiguracji muszą być unikatowe dla grupy zasobów.

Konfiguracje konserwacji można sprawdzić przy użyciu polecenia Get-AzMaintenanceConfiguration.

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

Przypisywanie konfiguracji

Po utworzeniu konfiguracji możesz również przypisać do niej maszyny przy użyciu programu PowerShell. Aby to osiągnąć, użyjemy polecenia New-AzConfigurationAssignment.

Izolowana maszyna wirtualna

Przypisz konfigurację do maszyny wirtualnej przy użyciu identyfikatora konfiguracji. Określ -ResourceType VirtualMachines i podaj nazwę maszyny wirtualnej dla -ResourceName, oraz grupę zasobów maszyny wirtualnej dla -ResourceGroupNameelementu .

New-AzConfigurationAssignment `
   -ResourceGroupName "myResourceGroup" `
   -Location "eastus" `
   -ResourceName "myVM" `
   -ResourceType "VirtualMachines" `
   -ProviderName "Microsoft.Compute" `
   -ConfigurationAssignmentName "configName" `
   -MaintenanceConfigurationId "configID"

Dedykowany host

Aby zastosować konfigurację do dedykowanego hosta, należy również dołączyć -ResourceType hosts-ResourceParentName element z nazwą grupy hostów i -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"

Gość

New-AzConfigurationAssignment `
   -ResourceGroupName "myResourceGroup" `
   -Location "eastus" `
   -ResourceName "myGuest" `
   -ResourceType "VirtualMachines" `
   -ProviderName "Microsoft.Compute" `
   -ConfigurationAssignmentName "configName" `
   -MaintenanceConfigurationId "configID"

Sprawdzanie oczekujących aktualizacji

Użyj polecenia Get-AzMaintenanceUpdate , aby sprawdzić, czy istnieją oczekujące aktualizacje. Użyj -subscription polecenia , aby określić subskrypcję platformy Azure maszyny wirtualnej, jeśli różni się ona od zalogowanego.

Jeśli nie ma aktualizacji do pokazania, to polecenie nie zwróci nic. W przeciwnym razie zwróci obiekt 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"
} 

Izolowana maszyna wirtualna

Sprawdź oczekujące aktualizacje dla izolowanej maszyny wirtualnej. W tym przykładzie dane wyjściowe są sformatowane jako tabela na potrzeby czytelności.

Get-AzMaintenanceUpdate `
  -ResourceGroupName "myResourceGroup" `
  -ResourceName "myVM" `
  -ResourceType "VirtualMachines" `
  -ProviderName "Microsoft.Compute" | Format-Table

Dedykowany host

Sprawdź oczekujące aktualizacje dla dedykowanego hosta. W tym przykładzie dane wyjściowe są sformatowane jako tabela na potrzeby czytelności.

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

Stosowanie aktualizacji

Użyj polecenia New-AzApplyUpdate , aby zastosować oczekujące aktualizacje. Wykonanie wywołań aktualizacji może potrwać do 2 godzin. To polecenie cmdlet będzie działać tylko dla zakresów Host i OSImage . Nie będzie działać dla zakresu gościa .

Izolowana maszyna wirtualna

Utwórz żądanie zastosowania aktualizacji do izolowanej maszyny wirtualnej.

New-AzApplyUpdate `
  -ResourceGroupName "myResourceGroup" `
  -ResourceName "myVM" `
  -ResourceType "VirtualMachines" `
  -ProviderName "Microsoft.Compute"

Po powodzeniu to polecenie zwróci PSApplyUpdate obiekt. Atrybut Name można użyć w poleceniu , Get-AzApplyUpdate aby sprawdzić stan aktualizacji. Zobacz Sprawdzanie stanu aktualizacji.

Dedykowany host

Stosowanie aktualizacji do dedykowanego hosta.

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"

Sprawdzanie stanu aktualizacji

Użyj polecenia Get-AzApplyUpdate , aby sprawdzić stan aktualizacji. Poniższe polecenia pokazują stan najnowszej aktualizacji przy użyciu default parametru -ApplyUpdateName . Możesz zastąpić nazwę aktualizacji (zwróconą przez polecenie New-AzApplyUpdate ), aby uzyskać stan określonej aktualizacji. To polecenie cmdlet będzie działać tylko dla zakresów Host i OSImage . Nie będzie działać dla zakresu gościa .

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 to czas ukończenia aktualizacji zainicjowany przez Ciebie lub przez platformę w przypadku, gdy okno samodzielnej konserwacji nie zostało użyte. Jeśli nigdy nie zastosowano aktualizacji za pomocą konfiguracji konserwacji, zostanie wyświetlona wartość domyślna.

Izolowana maszyna wirtualna

Sprawdź aktualizacje określonej maszyny wirtualnej.

Get-AzApplyUpdate `
  -ResourceGroupName "myResourceGroup" `
  -ResourceName "myVM" `
  -ResourceType "VirtualMachines" `
  -ProviderName "Microsoft.Compute" `
  -ApplyUpdateName "applyUpdateName"

Dedykowany host

Sprawdź aktualizacje dedykowanego hosta.

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"

Usuwanie konfiguracji konserwacji

Użyj polecenia Remove-AzMaintenanceConfiguration , aby usunąć konfigurację konserwacji.

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

Następne kroki

Aby dowiedzieć się więcej, zobacz Konserwacja i aktualizacje.