Kurz: Vytvoření události před a po nasazení pomocí služby Azure Functions
Platí pro: ✔️ Virtuální ✔️ počítače s Windows s Linuxem ✔️ v místním prostředí ✔️ virtuálních počítačů Azure s ✔️ podporou Azure Arc.
Tento kurz vysvětluje, jak vytvořit události před a po spuštění a zastavení virtuálního počítače v pracovním postupu opravy plánu pomocí Azure Functions.
V tomto kurzu se naučíte:
- Požadavky
- Vytvoření aplikace funkcí
- Vytvoření funkce
- Vytvoření odběru událostí
Požadavky
Ujistěte se, že používáte runbook PowerShellu 7.2 .
Přiřaďte oprávnění spravovaným identitám – Oprávnění můžete přiřadit příslušné spravované identitě. Runbook může používat spravovanou identitu přiřazenou systémem účtu Automation nebo spravovanou identitu přiřazenou uživatelem.
K přiřazení oprávnění ke každé identitě můžete použít buď portál, nebo rutiny PowerShellu:
Přiřaďte oprávnění podle kroků v části Přiřazení rolí Azure pomocí webu Azure Portal .
- Importujte
Az.ResourceGraph
modul, ujistěte se, že se modul aktualizuje na ThreadJob s modulem verze 2.0.3.
Vytvoření aplikace funkcí
Postupujte podle pokynů k vytvoření aplikace funkcí.
Po vytvoření aplikace funkcí přejděte k prostředku a následujícím postupem se ujistěte, že načtete závislosti:
Poznámka:
Závislosti musíte načíst jenom poprvé. Pokud se nedaří načíst závislosti PowerShellu. Zkontrolujte nejnovější verze AZ a AZ. ResourceGraph.
V aplikaci funkcí vyberte Soubory aplikace.
V části host.json povolte ManagedDependecy hodnotu True a vyberte požadavky.psd1.
Pod požadavky.psd1 vložte následující kód:
@{ 'Az'='12.*' 'Az.ResourceGraph'='1.0.0' 'Az.Resources'='6.*' 'ThreadJob' = '2.*' }
Zvolte Uložit.
Restartujte aplikaci funkcí z karty Přehled a načtěte závislosti uvedené v souboru requirements.psd1 .
Vytvoření funkce
Po vytvoření aplikace funkcí přejděte na Prostředek a v přehledu vyberte Vytvořit na webu Azure Portal.
V okně Vytvořit funkci proveďte následující výběry:
Ve funkci Event Grid vyberte v nabídce vlevo kód+test, vložte následující kód a vyberte Uložit.
# Make sure that we are using eventGridEvent for parameter binding in 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 } }
V nabídce vlevo vyberte Možnost Integrace a v části Aktivační událost upravte název parametru Aktivační událost. Použijte stejný název parametru uvedený v okně Code+Test . V příkladu je parametr eventGridEvent.
Zvolte Uložit.
Vytvoření odběru událostí
- Přihlaste se k webu Azure Portal a přejděte na Azure Update Manager.
- V části Spravovat vyberte Počítače, Konfigurace údržby.
- Na stránce Konfigurace údržby vyberte konfiguraci.
- V části Nastavení vyberte Události.
- Výběrem možnosti +Odběr události vytvořte událost před údržbou nebo po dokončení údržby.
- Na stránce Vytvořit odběr události zadejte následující podrobnosti:
- V části Podrobnosti odběru událostí zadejte odpovídající název.
- Ponechte schéma jako schéma Event Gridu.
- V části Typy událostí vyfiltrujte typy událostí.
- Vyberte událost před údržbou pro předběžnou událost.
- V části Podrobnosti o koncovém bodu vyberte koncový bod funkce Azure a vyberte Konfigurovat a Koncový bod.
- Zadejte odpovídající podrobnosti, jako jsou skupiny prostředků, aplikace funkcí pro aktivaci události.
- Vyberte událost po údržbě pro událost po události.
- V části Podrobnosti o koncovém bodu vyberte koncový bod funkce Azure a vyberte Konfigurovat a Koncový bod.
- Zadejte odpovídající podrobnosti, jako je skupina prostředků, aplikace funkcí pro aktivaci události.
- Vyberte událost před údržbou pro předběžnou událost.
- Vyberte Vytvořit.
K ukládání, odesílání a příjmu událostí můžete použít také účty Azure Storage a centrum událostí. Přečtěte si další informace o tom, jak vytvořit centrum událostí a fronty úložiště.
Další kroky
- Přečtěte si další informace o přehledu událostí před a po publikování v Azure Update Manageru.
- Další informace o vytváření událostí před a po publikování
- Informace o správě událostí před a po odeslání nebo zrušení spuštění plánu najdete v tématu události konfigurace před a po dokončení údržby.
- Přečtěte si další informace o vytváření událostí před a publikování pomocí webhooku se službou Automation.