Tutorial: Membuat runbook PowerShell Workflow di Azure Automation

Tutorial ini memandu Anda tentang cara pembuatan runbook PowerShell Workflow di Azure Automation. Runbook PowerShell Workflow adalah runbook teks berdasarkan Windows PowerShell Workflow. Anda dapat membuat dan mengedit kode runbook menggunakan editor teks di portal Microsoft Azure.

Catatan

Artikel ini berlaku untuk PowerShell 5.1; PowerShell 7.1 (pratinjau) dan PowerShell 7.2 tidak mendukung alur kerja.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Membuat runbook Alur Kerja PowerShell
  • Menguji dan menerbitkan runbook
  • Menjalankan dan melacak status pekerjaan runbook
  • Menambahkan autentikasi untuk mengelola sumber daya Azure
  • Memperbarui parameter runbook untuk memulai mesin virtual Azure

Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.

Prasyarat

Tetapkan izin untuk identitas terkelola

Tetapkan izin untuk identitas terkelola yang sesuai untuk memungkinkannya menghentikan mesin virtual. Runbook dapat menggunakan identitas terkelola yang ditetapkan sistem akun Automation atau identitas terkelola yang ditetapkan pengguna. Langkah-langkah disediakan untuk menetapkan izin untuk setiap identitas. Langkah-langkah di bawah ini menggunakan portal Microsoft Azure. Jika Anda lebih suka menggunakan PowerShell, lihat Menetapkan peran Azure menggunakan Azure PowerShell.

  1. Masuk ke portal Microsoft Azure, lalu buka akun Automation Anda.

  2. Pada Pengaturan Akun, pilih Identitas (Pratinjau).

  3. Dari tab Sistem yang ditetapkan, di bawah Izin, pilih Penetapan peran Azure untuk membuka halaman Penetapan peran Azure.

    Selecting Azure role assignments in portal.

  4. Pilih + Menambahkan penetapan peran (Pratinjau) untuk membuka halaman Menambahkan penetapan peran (Pratinjau).

    Add role assignments in portal.

  5. Pilih nilai yang sesuai.

    Properti Deskripsi
    Scope Cakupan adalah kumpulan sumber daya yang menerapkan penetapan peran. Dari menu drop-down, pilih Grup Sumber Daya.
    Langganan Bidang ini akan terisi secara otomatis dengan langganan Anda.
    Grup Sumber Daya Dari menu drop-down, pilih grup sumber daya untuk memberikan izin identitas.
    Peran Dari menu drop-down, pilih Pengguna DevTest Labs.
  6. Pilih Simpan, lalu tutup halaman Penetapan peran Azure untuk kembali ke tab Sistem yang ditetapkan.

  7. Memilih tab Pengguna yang ditetapkan.

  8. Pilih identitas terkelola yang ditetapkan pengguna Anda dari daftar untuk membuka halaman Identitas Terkelola.

    Selecting user-assigned managed identity in portal.

  9. Catat ID Klien untuk digunakan nanti.

    Showing Client ID for managed identity in portal

  10. Dari menu sebelah kiri, pilih Penetapan peran Azure lalu + Menambahkan penetapan peran (Pratinjau) untuk membuka halaman Menambahkan penetapan peran (Pratinjau).

    Add role assignments in portal for user-assigned identity.

  11. Pilih nilai yang sesuai.

    Properti Deskripsi
    Scope Dari menu drop-down, pilih Grup Sumber Daya.
    Langganan Bidang ini akan terisi secara otomatis dengan langganan Anda.
    Grup Sumber Daya Dari menu drop-down, pilih grup sumber daya untuk memberikan izin identitas.
    Peran Dari menu drop-down, pilih Pengguna DevTest Labs.
  12. Pilih Simpan, lalu tutup halaman Penetapan peran Azure untuk kembali ke tab Pengguna yang ditetapkan.

Membuat runbook baru

Mulailah dengan membuat runbook PowerShell Workflow sederhana. Salah satu keunggulan Windows PowerShell Workflows adalah kemampuan untuk melakukan serangkaian perintah secara paralel dan bukan secara berurutan seperti pada skrip biasa.

Catatan

Dengan rilis pembuatan runbook memiliki pengalaman baru di portal Azure. Saat Anda memilih bilah >Runbook Buat runbook, halaman baru Buat runbook terbuka dengan opsi yang berlaku.

  1. Dari halaman akun Azure Automation yang terbuka, di bawah Automasi Proses, pilih Runbook

    Create PowerShell workflow runbook from portal

  2. Pilih Buat runbook.

    1. Beri nama pada runbook. Misalnya, pengujian.
    2. Dari menu drop-down Jenis runbook, pilih PowerShell Workflow.
    3. Dari drop-down Versi runtime, pilih 5.1.
    4. Masukkan Deskripsi yang berlaku.
    5. Pilih Buat.

    PowerShell workflow runbook options from portal

Menambahkan kode ke runbook

Anda dapat mengetik kode langsung ke dalam runbook, atau Anda dapat memilih cmdlet, runbook, dan aset dari kontrol Perpustakaan dan menambahkannya ke runbook dengan parameter terkait. Untuk tutorial ini, Anda akan mengetik kode langsung ke dalam runbook.

Runbook Anda saat ini kosong hanya dengan kata kunci Workflow yang diperlukan, nama runbook, dan kurung kurawal yang mengemas seluruh alur kerja.

Workflow MyFirstRunbook-Workflow
{
}
  1. Anda dapat menggunakan kata kunci Parallel untuk membuat blok skrip dengan beberapa perintah yang akan berjalan secara bersamaan. Masukkan kode berikut di antara tanda kurung:

    Parallel {
         Write-Output "Parallel"
         Get-Date
         Start-Sleep -s 3
         Get-Date
     }
    
    Write-Output " `r`n"
    Write-Output "Non-Parallel"
    Get-Date
    Start-Sleep -s 3
    Get-Date
    
  2. Simpan runbook dengan memilih Simpan.

Menguji runbook

Sebelum Anda menerbitkan runbook untuk membuatnya tersedia dalam produksi, Anda harus mengujinya untuk memastikan bahwa runbook ini berfungsi dengan baik. Pengujian runbook akan menjalankan versi Draf-nya dan memungkinkan Anda untuk melihat outputnya secara interaktif.

  1. Pilih Panel uji untuk membuka halaman Uji.

  2. Pilih Mulai untuk memulai pengujian. Pekerjaan runbook dibuat dan statusnya ditampilkan di panel.

    Status pekerjaan dimulai sebagai Antrian, menunjukkan bahwa pekerjaan sedang menunggu pemroses runbook di cloud tersedia. Status berubah menjadi Mulai ketika pemroses memulai pekerjaannya. Akhirnya, status menjadi Berjalan ketika runbook benar-benar mulai berjalan.

  3. Ketika pekerjaan runbook selesai, halaman Uji menampilkan output. Output akan terlihat seperti gambar berikut:

    PowerShell workflow runbook parallel output

    Tinjau output. Segala sesuatu di blok Parallel, termasuk perintah Start-Sleep, dijalankan pada waktu yang sama. Perintah yang sama di luar blok Parallel dijalankan secara berurutan, seperti yang ditunjukkan oleh tanda waktu tanggal yang berbeda.

  4. Tutup halaman Uji untuk kembali ke kanvas.

Menerbitkan dan memulai runbook

Runbook yang telah Anda buat masih dalam mode Draf. Anda perlu menerbitkannya sebelum dapat menjalankannya dalam produksi. Saat Anda menerbitkan runbook, Anda menimpa versi yang telah Dipublikasikan sebelumnya dengan versi Draf. Dalam hal ini, Anda belum memiliki versi yang dipublikasikan karena Anda baru saja membuat runbook.

  1. Pilih Terbitkan untuk menerbitkan runbook lalu Ya ketika diminta.

  2. Bidang Status sekarang menunjukkan Diterbitkan. Tinjau opsi di bagian atas yang memungkinkan Anda untuk memulai runbook sekarang, menjadwalkan waktu mulai di masa mendatang, atau membuat webhook sehingga runbook dapat dimulai melalui panggilan HTTP. Pilih Mulai lalu Ya ketika diminta untuk memulai runbook.

    PowerShell workflow runbook overview page

  3. Halaman Pekerjaan terbuka untuk pekerjaan runbook yang telah dibuat. Dalam hal ini, biarkan halaman terbuka sehingga Anda dapat melihat kemajuan pekerjaan. Bidang Status cocok dengan status yang Anda lihat saat menguji runbook.

    Screenshot of the runbook Job page.

  4. Setelah status runbook menunjukkan Selesai, pilih Output. Output akan terlihat mirip dengan output pengujian.

  5. Tutup halaman Pekerjaan untuk kembali ke halaman Gambaran Umum runbook.

  6. Di bawah Sumber Daya, pilih Pekerjaan. Halaman ini mencantumkan semua pekerjaan yang dibuat oleh runbook Anda. Anda akan melihat satu pekerjaan terdaftar, karena Anda telah menjalankan pekerjaan hanya sekali.

  7. Pilih nama pekerjaan untuk membuka halaman Pekerjaan yang sama dengan yang Anda lihat saat memulai runbook. Gunakan halaman ini untuk melihat detail pekerjaan apa pun yang dibuat untuk runbook. Tutup halaman Pekerjaan untuk kembali ke halaman Gambaran Umum runbook.

Menambahkan autentikasi untuk mengelola sumber daya Azure

Anda telah menguji dan menerbitkan runbook Anda, tetapi sejauh ini tidak melakukan sesuatu yang berguna. Anda ingin runbook mengelola sumber daya Azure. Ini tidak dapat melakukan itu kecuali mengautentikasi menggunakan kredensial untuk langganan. Runbook menggunakan identitas terkelola yang ditetapkan sistem akun Automation untuk mengautentikasi dengan Azure untuk melakukan tindakan pengelolaan terhadap VM. Runbook dapat dengan mudah dimodifikasi untuk menggunakan identitas terkelola yang ditetapkan pengguna.

  1. Pilih Gambaran Umum lalu Edit untuk membuka editor teks.

  2. Ganti kode yang ada dengan yang berikut ini:

    workflow MyFirstRunbook-Workflow
    {
    $resourceGroup = "resourceGroupName"
    
    # Ensures you do not inherit an AzContext in your runbook
    Disable-AzContextAutosave -Scope Process
    
    # Connect to Azure with system-assigned managed identity
    Connect-AzAccount -Identity
    
    # set and store context
    $AzureContext = Set-AzContext –SubscriptionId "<SubscriptionID>"
    }
    

    Edit variabel $resourceGroup dengan nilai valid yang mewakili grup sumber daya Anda.

  3. Jika Anda ingin runbook dijalankan dengan identitas terkelola yang ditetapkan sistem, jangan ubah kodenya. Jika Anda lebih suka menggunakan identitas terkelola yang ditetapkan pengguna:

    1. Dari baris 9, hapus Connect-AzAccount -Identity,
    2. Ganti dengan Connect-AzAccount -Identity -AccountId <ClientId>, dan
    3. Masukkan ID Klien yang Anda peroleh sebelumnya.
  4. Pilih Simpan lalu panel Uji.

  5. Pilih Mulai untuk memulai pengujian. Setelah selesai, Anda akan melihat output yang mirip dengan yang berikut ini, menampilkan informasi dasar dari akun Anda. Tindakan ini menegaskan bahwa informasi masuk tersebut valid.

    Basic information that confirms credentials.

  6. Tutup halaman Uji untuk kembali ke kanvas.

Menambahkan kode untuk memulai mesin virtual

Sekarang setelah runbook Anda mengautentikasi langganan Azure, Anda dapat mengelola sumber daya. Tambahkan perintah untuk memulai mesin virtual. Anda dapat memilih VM apa pun di langganan Azure Anda, dan untuk saat ini Anda hardcoding nama tersebut di runbook.

  1. Tambahkan kode di bawah ini sebagai baris terakhir tepat sebelum kurung kurawal penutup. Ganti VMName dengan nama VM yang sebenarnya.

    Start-AzVM -Name "VMName" -ResourceGroupName $resourceGroup -DefaultProfile $AzureContext
    
  2. Uji runbook dan konfirmasikan bahwa VM telah dimulai. Lalu, kembali ke kanvas.

Menambahkan parameter input ke runbook

Runbook Anda saat ini memulai VM yang telah Anda hardcode dalam runbook. Ini akan lebih berguna jika Anda dapat menentukan VM ketika runbook dimulai. Tambahkan parameter input ke runbook untuk menyediakan fungsionalitas tersebut.

  1. Ganti baris 3, $resourceGroup = "resourceGroupName", dengan yang berikut:

    Param(
        [string]$resourceGroup,
        [string]$VMName
    )
    
  2. Ganti perintah Start-AzVM sebelumnya dengan yang berikut:

    Start-AzVM -Name $VMName -ResourceGroupName $resourceGroup -DefaultProfile $AzureContext
    
  3. Uji runbook dan konfirmasikan bahwa VM telah dimulai. Lalu, kembali ke kanvas.

Mengelola beberapa VM secara bersamaan

Anda dapat menggunakan konstruksi ForEach -Parallel untuk memproses perintah untuk setiap item dalam kumpulan secara bersamaan. Revisi kode sehingga runbook sekarang akan:

  • Menerima kumpulan nama mesin virtual,
  • Menerima parameter untuk menghentikan atau memulai mesin virtual, dan
  • Melakukan tindakan secara paralel terhadap semua mesin virtual
  1. Ganti semua kode yang ada dengan yang berikut ini:

    workflow MyFirstRunbook-Workflow
    {
       Param(
           [string]$resourceGroup,
           [string[]]$VMs,
           [string]$action
       )
    
       # Ensures you do not inherit an AzContext in your runbook
       Disable-AzContextAutosave -Scope Process
    
       # Connect to Azure with system-assigned managed identity
       Connect-AzAccount -Identity
    
       # set and store context
       $AzureContext = Set-AzContext –SubscriptionId "<SubscriptionID>"
    
       # Start or stop VMs in parallel
       if ($action -eq "Start") {
           ForEach -Parallel ($vm in $VMs)
           {
               Start-AzVM -Name $vm -ResourceGroupName $resourceGroup -DefaultProfile $AzureContext
           }
       }
       elseif ($action -eq "Stop") {
           ForEach -Parallel ($vm in $VMs)
           {
               Stop-AzVM -Name $vm -ResourceGroupName $resourceGroup -DefaultProfile $AzureContext -Force
           }
       }
       else {
           Write-Output "`r`n Action not allowed. Please enter 'stop' or 'start'."
       }
       }
    
  2. Jika Anda ingin runbook dijalankan dengan identitas terkelola yang ditetapkan sistem, jangan ubah kodenya. Jika Anda lebih suka menggunakan identitas terkelola yang ditetapkan pengguna:

    1. Dari baris 9, hapus Connect-AzAccount -Identity,
    2. Ganti dengan Connect-AzAccount -Identity -AccountId <ClientId>, dan
    3. Masukkan ID Klien yang Anda peroleh sebelumnya.
  3. Pilih Simpan, lalu Terbitkan, lalu Ya saat diminta.

  4. Dari halaman Gambaran Umum, pilih Mulai.

  5. Isi parameter lalu pilih OK.

    Parameter Deskripsi
    RESOURCEGROUP Masukkan nama grup sumber daya VM.
    VM Masukkan nama-nama mesin virtual menggunakan sintaks berikut: ["VM1","VM2","VM3"]
    Perbuatan Masukkan stop atau start.
  6. Arahkan ke daftar mesin virtual Anda dan refresh halaman setiap beberapa detik. Perhatikan bahwa tindakan untuk setiap VM terjadi secara paralel. Tanpa kata kunci -Parallel, tindakan akan dilakukan secara berurutan. Sementara VM akan dimulai secara berurutan, setiap VM dapat mencapai fase Berjalan pada waktu yang sedikit berbeda berdasarkan karakteristik masing-masing VM.

Membersihkan sumber daya

Jika Anda berencana tidak menggunakan runbook ini, hapus dengan langkah-langkah berikut:

  1. Buka Akun Azure Automation Anda.
  2. Di Proses Automasi, pilih Runbook.
  3. Pilih runbook.
  4. Dari halaman Gambaran Umum runbook, pilih Hapus.

Langkah berikutnya

Dalam tutorial ini, Anda membuat runbook alur kerja PowerShell. Untuk melihat runbook Python 3, lihat: