Tutorial: Membuat peristiwa pra dan posting menggunakan Azure Functions
Berlaku untuk: ✔️ VM Windows VM ✔️ ✔️ Linux Lingkungan ✔️ lokal Azure VM server ✔️ yang didukung Azure Arc.
Tutorial ini menjelaskan cara membuat peristiwa pra dan posting untuk memulai dan menghentikan VM dalam alur kerja patch jadwal menggunakan Azure Functions.
Dalam tutorial ini, Anda akan mempelajari cara:
- Prasyarat
- Buat aplikasi fungsi
- Membuat fungsi
- Membuat langganan peristiwa
Prasyarat
Pastikan Anda menggunakan runbook PowerShell 7.2 .
Tetapkan izin ke identitas terkelola - Anda dapat menetapkan izin ke identitas terkelola yang sesuai. Runbook dapat menggunakan identitas terkelola yang ditetapkan sistem akun Automation atau identitas terkelola yang ditetapkan pengguna.
Anda dapat menggunakan cmdlet portal atau PowerShell untuk menetapkan izin ke setiap identitas:
Ikuti langkah-langkah dalam Menetapkan peran Azure menggunakan portal Azure untuk menetapkan izin
Az.ResourceGraph
Impor modul, pastikan modul diperbarui ke ThreadJob dengan modul versi 2.0.3.
Buat aplikasi fungsi
Ikuti langkah-langkah untuk Membuat aplikasi fungsi.
Setelah Anda membuat aplikasi fungsi, Buka sumber daya, pastikan Anda memuat dependensi dengan mengikuti langkah-langkah berikut:
Catatan
Anda harus memuat dependensi hanya untuk pertama kalinya. Jika dependensi PowerShell gagal dimuat. Periksa versi terbaru AZ, dan AZ. ResourceGraph.
Pada Aplikasi Fungsi, pilih File aplikasi.
Di bawah host.json, aktifkan ManagedDependecy ke True dan pilih requirements.psd1.
Di bawah requirements.psd1, tempelkan kode berikut:
@{ 'Az'='12.*' 'Az.ResourceGraph'='1.0.0' 'Az.Resources'='6.*' 'ThreadJob' = '2.*' }
Pilih Simpan.
Mulai ulang aplikasi fungsi dari tab Gambaran Umum untuk memuat dependensi yang disebutkan dalam file requirements.psd1 .
Membuat fungsi
Setelah Anda membuat aplikasi fungsi, buka Sumber Daya, dan di Gambaran Umum, pilih Buat di portal Azure.
Di jendela Buat fungsi , buat pilihan berikut:
Di fungsi Event grid, pilih Code+Test dari menu sebelah kiri, tempelkan kode berikut dan pilih Simpan.
# 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 } }
Pilih Integrasi dari menu sebelah kiri dan edit nama parameter Pemicu Peristiwa di bawah Pemicu. Gunakan nama parameter yang sama yang diberikan di jendela Code+Test . Dalam contoh, parameternya adalah eventGridEvent.
Pilih Simpan
Membuat langganan Peristiwa
- Masuk ke portal Azure dan buka Azure Update Manager Anda.
- Di bawah Kelola, pilih Mesin, Konfigurasi Pemeliharaan.
- Pada halaman Konfigurasi Pemeliharaan, pilih konfigurasi.
- Di bawah Pengaturan, pilih Peristiwa.
- Pilih +Langganan Peristiwa untuk membuat peristiwa pemeliharaan pra/pasca pemeliharaan.
- Pada halaman Buat Langganan Peristiwa, masukkan detail berikut ini:
- Di bagian Detail Langganan Peristiwa, berikan nama yang sesuai.
- Pertahankan skema sebagai Skema Event Grid.
- Di bagian Jenis Peristiwa, Filter ke Jenis Peristiwa.
- Pilih Peristiwa Pra-Pemeliharaan untuk pra-peristiwa.
- Di bagian Detail titik akhir, pilih titik akhir Azure Function dan pilih Konfigurasikan dan Titik Akhir.
- Berikan detail yang sesuai seperti Grup sumber daya, aplikasi fungsi untuk memicu peristiwa.
- Pilih Pasca Pemeliharaan Peristiwa untuk pasca-peristiwa.
- Di bagian Detail titik akhir, titik akhir Azure Function dan pilih Konfigurasikan dan Titik Akhir.
- Berikan detail yang sesuai seperti Grup sumber daya, aplikasi Fungsi untuk memicu peristiwa.
- Pilih Peristiwa Pra-Pemeliharaan untuk pra-peristiwa.
- Pilih Buat.
Anda juga dapat menggunakan akun Azure Storage dan Event hub untuk menyimpan, mengirim, dan menerima peristiwa. Pelajari selengkapnya tentang cara membuat hub Peristiwa dan antrean Penyimpanan.
Langkah berikutnya
- Pelajari selengkapnya tentang gambaran umum peristiwa pra dan posting di Azure Update Manager.
- Pelajari selengkapnya tentang cara membuat peristiwa pra dan posting
- Untuk mempelajari cara mengelola peristiwa pra dan posting atau membatalkan eksekusi jadwal, lihat peristiwa konfigurasi pra dan pasca pemeliharaan.
- Pelajari selengkapnya tentang Membuat peristiwa pra dan posting menggunakan webhook dengan Automation.