Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: ✔️ Maszyny wirtualne z systemem Windows Maszyny ✔️ wirtualne z systemem Linux ✔️ w środowisku ✔️ lokalnym maszyn wirtualnych platformy Azure maszyn wirtualnych platformy ✔️ Azure z obsługą usługi Azure Arc.
W tym samouczku wyjaśniono, jak utworzyć zdarzenia przed konserwacją i po konserwacji, aby uruchomić i zatrzymać maszynę wirtualną (VM) w zaplanowanym procesie aktualizacji przy użyciu Azure Functions.
Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
- Tworzenie aplikacji funkcji.
- Utwórz funkcję.
- Utwórz subskrypcję zdarzeń.
Wymagania wstępne
Upewnij się, że używasz runbooka PowerShell 7.4.
Przypisz uprawnienia do odpowiedniej tożsamości zarządzanej. Runbook może używać przypisanej przez system tożsamości zarządzanej konta Automation lub tożsamości zarządzanej przypisanej przez użytkownika.
Następujące przykłady skryptów (uruchamianie i zatrzymywanie maszyn wirtualnych) wymagają roli Współautor maszyny wirtualnej lub roli niestandardowej z następującymi określonymi uprawnieniami:
- Microsoft.Compute/maszynyWirtualne/start/akcja
- Microsoft.Compute/virtualMachines/deallocate/action
- Microsoft.Compute/virtualMachines/restart/action (akcja)
- Microsoft.Compute/virtualMachines/powerOff/action
Aby przypisać uprawnienia do każdej tożsamości, możesz użyć witryny Azure Portal lub poleceń cmdlet programu Azure PowerShell:
Aby przypisać uprawnienia, wykonaj kroki opisane w temacie Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.
- Zaimportuj
Az.ResourceGraphmoduł. Upewnij się, że moduł został zaktualizowany do wersji 2.0.3 modułu ThreadJob.
Tworzenie aplikacji funkcji
Wykonaj kroki tworzenia aplikacji funkcji.
Przejdź do zasobu i załaduj zależności, wykonując następujące kroki.
Uwaga
Musisz tylko załadować zależności po raz pierwszy. Jeśli nie można załadować zależności programu PowerShell, sprawdź najnowsze wersje programu
AziAz.ResourceGraph.W obszarze Aplikacja funkcji wybierz pozycję Pliki aplikacji.
W host.json ustaw wartość ManagedDependency na True i wybierz pozycję requirements.psd1.
W obszarze requirements.psd1 wklej następujący kod:
@{ 'Az'='12.*' 'Az.ResourceGraph'='1.0.0' 'Az.Resources'='6.*' 'ThreadJob' = '2.*' }Wybierz pozycję Zapisz.
Uruchom ponownie aplikację funkcji z karty Przegląd , aby załadować zależności wymienione w pliku requirements.psd1 .
Tworzenie funkcji
Po utworzeniu aplikacji funkcji przejdź do zasobu, przejdź do Przegląd, a następnie wybierz Utwórz w portalu Azure.
W okienku Tworzenie funkcji wybierz następujące opcje:
W okienku Funkcji usługi Event Grid wybierz pozycję Kod+Test z menu po lewej stronie. Wklej następujący kod, a następnie wybierz pozycję Zapisz.
# Make sure that you're using eventGridEvent for parameter binding in the Azure function. param($eventGridEvent, $TriggerMetadata) Connect-AzAccount -Identity # Install the Resource Graph module from PowerShell Gallery # Install-Module -Name Az.ResourceGraph $maintenanceRunId = $eventGridEvent.data.CorrelationId $resourceSubscriptionIds = $eventGridEvent.data.ResourceSubscriptionIds if ($resourceSubscriptionIds.Count -eq 0) { Write-Output "Resource subscriptions are not present." break } Write-Output "Querying ARG to get machine details [MaintenanceRunId=$maintenanceRunId][ResourceSubscriptionIdsCount=$($resourceSubscriptionIds.Count)]" $argQuery = @" maintenanceresources | where type =~ 'microsoft.maintenance/applyupdates' | where properties.correlationId =~ '$($maintenanceRunId)' | where id has '/providers/microsoft.compute/virtualmachines/' | project id, resourceId = tostring(properties.resourceId) | order by id asc "@ Write-Output "Arg Query Used: $argQuery" $allMachines = [System.Collections.ArrayList]@() $skipToken = $null do { $res = Search-AzGraph -Query $argQuery -First 1000 -SkipToken $skipToken -Subscription $resourceSubscriptionIds $skipToken = $res.SkipToken $allMachines.AddRange($res.Data) } while ($skipToken -ne $null -and $skipToken.Length -ne 0) if ($allMachines.Count -eq 0) { Write-Output "No Machines were found." break } $jobIDs= New-Object System.Collections.Generic.List[System.Object] $startableStates = "stopped" , "stopping", "deallocated", "deallocating" $allMachines | ForEach-Object { $vmId = $_.resourceId $split = $vmId -split "/"; $subscriptionId = $split[2]; $rg = $split[4]; $name = $split[8]; Write-Output ("Subscription Id: " + $subscriptionId) $mute = Set-AzContext -Subscription $subscriptionId $vm = Get-AzVM -ResourceGroupName $rg -Name $name -Status -DefaultProfile $mute $state = ($vm.Statuses[1].DisplayStatus -split " ")[1] if($state -in $startableStates) { Write-Output "Starting '$($name)' ..." $newJob = Start-ThreadJob -ScriptBlock { param($resource, $vmname, $sub) $context = Set-AzContext -Subscription $sub; Start-AzVM -ResourceGroupName $resource -Name $vmname -DefaultProfile $context} -ArgumentList $rg, $name, $subscriptionId $jobIDs.Add($newJob.Id) } else { Write-Output ($name + ": no action taken. State: " + $state) } } $jobsList = $jobIDs.ToArray() if ($jobsList) { Write-Output "Waiting for machines to finish starting..." Wait-Job -Id $jobsList } foreach($id in $jobsList) { $job = Get-Job -Id $id if ($job.Error) { Write-Output $job.Error } }W menu po lewej stronie wybierz pozycję Integracja. W polu Wyzwalacz wprowadź wartość nazwy parametru wyzwalacza zdarzeń . Użyj tej samej nazwy parametru podanej w oknie Kod+test . W tym przykładzie parametr ma wartość
eventGridEvent.Wybierz pozycję Zapisz.
Tworzenie subskrypcji zdarzeń
Zaloguj się do witryny Azure Portal i przejdź do usługi Menedżer aktualizacji platformy Azure.
W obszarze Zarządzanie wybierz pozycjęKonfiguracja konserwacji>.
W okienku Konfiguracja konserwacji wybierz konfigurację.
W obszarze Ustawienia wybierz pozycję Zdarzenia.
Wybierz +Subskrypcję zdarzeń, aby utworzyć zdarzenie przed lub po konserwacji.
W okienku Tworzenie subskrypcji zdarzeń w sekcji Szczegóły subskrypcji zdarzeń podaj odpowiednią nazwę. Zachowaj schemat jako schemat usługi Event Grid.
W sekcji Typy zdarzeń w polu Filtruj do typów zdarzeń wybierz pozycję Zdarzenie przed konserwacją lub Zdarzenie po konserwacji.
W sekcji Szczegóły punktu końcowego wybierz punkt końcowy funkcji platformy Azure , a następnie wybierz pozycję Konfiguruj punkt końcowy.
Podaj odpowiednie szczegóły, takie jak grupa zasobów i aplikacja funkcyjna, aby wyzwolić zdarzenie.
Wybierz pozycję Utwórz.
Możesz również używać kont usługi Azure Storage i centrum zdarzeń do przechowywania, wysyłania i odbierania zdarzeń. Aby uzyskać więcej informacji, zobacz przewodniki Szybki start dotyczące tworzenia kolejki w usłudze Azure Storage i tworzenia centrum zdarzeń przy użyciu witryny Azure Portal.
Treści powiązane
- Zapoznaj się z omówieniem zdarzeń przed konserwacją i po konserwacji w usłudze Azure Update Manager.
- Dowiedz się więcej na temat tworzenia zdarzeń konserwacji wstępnej i po konserwacji.
- Dowiedz się , jak zarządzać zdarzeniami przed konserwacją i po konserwacji lub anulować zaplanowany przebieg.
- Dowiedz się , jak tworzyć zdarzenia przed konserwacją i po konserwacji przy użyciu webhooka w połączeniu z runbookami usługi Automation.