Oktatóanyag: Elő- és utóesemények létrehozása az Azure Functions használatával
A következőkre vonatkozik: ✔️ Windows rendszerű virtuális ✔️ gépek Linux ✔️ rendszerű virtuális gépek helyszíni környezete ✔️ Azure-beli ✔️ virtuális gépek Azure Arc-kompatibilis kiszolgálókra.
Ez az oktatóanyag bemutatja, hogyan hozhat létre elő- és közzétételi eseményeket egy virtuális gép elindításához és leállításához egy ütemezési javítás munkafolyamatában az Azure Functions használatával.
Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:
- Előfeltételek
- Függvényalkalmazás létrehozása
- Függvény létrehozása
- Esemény-előfizetés létrehozása
Előfeltételek
Győződjön meg arról, hogy a PowerShell 7.2 runbookot használja.
Engedélyek hozzárendelése felügyelt identitásokhoz – Engedélyeket rendelhet a megfelelő felügyelt identitáshoz. A runbook használhatja az Automation-fiók rendszer által hozzárendelt felügyelt identitását vagy egy felhasználó által hozzárendelt felügyelt identitást.
A portál vagy a PowerShell-parancsmagok segítségével engedélyeket rendelhet az egyes identitásokhoz:
Kövesse az Azure-szerepkörök hozzárendelése az Azure Portallal az engedélyek hozzárendeléséhez című szakaszban leírt lépéseket
- Importálja a modult
Az.ResourceGraph
, és győződjön meg arról, hogy a modul a 2.0.3-es verziójú ThreadJob-ra frissült.
Függvényalkalmazás létrehozása
Kövesse a függvényalkalmazás létrehozásához szükséges lépéseket.
A függvényalkalmazás létrehozása után nyissa meg az erőforrást, és győződjön meg arról, hogy az alábbi lépések végrehajtásával tölti be a függőségeket:
Feljegyzés
A függőségeket csak első alkalommal kell betöltenie. Ha a PowerShell-függőségek betöltése sikertelen. Ellenőrizze az AZ és az AZ legújabb verzióit. ResourceGraph.
A függvényalkalmazásban válassza az Alkalmazásfájlok lehetőséget.
Az host.json alatt engedélyezze a ManagedDependecy to True értéket, és válassza a requirements.psd1 elemet.
A requirements.psd1 területen illessze be a következő kódot:
@{ 'Az'='12.*' 'Az.ResourceGraph'='1.0.0' 'Az.Resources'='6.*' 'ThreadJob' = '2.*' }
Válassza a Mentés lehetőséget.
Indítsa újra a függvényalkalmazást az Áttekintés lapról a requirements.psd1 fájlban említett függőségek betöltéséhez.
Függvény létrehozása
A függvényalkalmazás létrehozása után lépjen az Erőforrás elemre, és az Áttekintés területen válassza a Létrehozás lehetőséget az Azure Portalon.
A Függvény létrehozása ablakban végezze el a következő beállításokat:
Az Event grid függvényben válassza a Kód+Teszt lehetőséget a bal oldali menüből, illessze be a következő kódot, és válassza a Mentés lehetőséget.
# 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álassza az Integráció lehetőséget a bal oldali menüben, és szerkessze az Eseményindító paraméter nevét az Eseményindító területen. Használja ugyanazt a paraméternevet, amelyet a Code+Test ablakban megadott. A példában a paraméter az eventGridEvent.
Válassza a Mentés lehetőséget
Esemény-előfizetés létrehozása
- Jelentkezzen be az Azure Portalra , és nyissa meg az Azure Update Managert.
- A Kezelés területen válassza a Gépek, Karbantartási konfiguráció lehetőséget.
- A Karbantartási konfiguráció lapon válassza ki a konfigurációt.
- A Beállítások területen válassza az Események lehetőséget.
- A +Event Subscription (Esemény-előfizetés) elemet választva hozzon létre egy karbantartási előtti/utáni eseményt.
- Az Esemény-előfizetés létrehozása lapon adja meg a következő adatokat:
- Az Esemény-előfizetés részletei szakaszban adja meg a megfelelő nevet.
- Tartsa a sémát Event Grid-sémaként.
- Az Eseménytípusok szakaszban szűrjön eseménytípusokra.
- Válassza az Előkarbantartási esemény lehetőséget egy előeseményhez.
- A Végpont részletei szakaszban válassza ki az Azure-függvény végpontját, majd a Konfigurálás és végpont lehetőséget.
- Adja meg a megfelelő részleteket, például az erőforráscsoportokat, a függvényalkalmazást az esemény aktiválásához.
- Válassza a Post Maintenance Event (Karbantartás utáni esemény ) lehetőséget egy esemény utáni eseményhez.
- A Végpont részletei szakaszban válassza az Azure-függvény végpontját, és válassza a Konfigurálás és végpont lehetőséget.
- Adja meg a megfelelő adatokat, például az erőforráscsoportot, a függvényalkalmazást az esemény aktiválásához.
- Válassza az Előkarbantartási esemény lehetőséget egy előeseményhez.
- Válassza a Létrehozás lehetőséget.
Az Azure Storage-fiókokat és az Event Hubot események tárolására, küldésére és fogadására is használhatja. További információ az Eseményközpont és a Storage-üzenetsorok létrehozásáról.
Következő lépések
- További információ az Azure Update Manager előzetes és közzétételi eseményeinek áttekintéséről.
- További információ az események elő- és közzétételének létrehozásáról
- Az elő- és utórendezvények kezelésével vagy az ütemezési futtatás megszakításával kapcsolatos információkért tekintse meg a karbantartás előtti és utáni konfigurációs eseményeket.
- További információ az események elő- és közzétételéről egy webhook használatával az Automation használatával.