Menjalankan Runbook di Azure Automation

Memproses otomatisasi di Azure Automation memungkinkan Anda membuat dan mengelola PowerShell, Alur Kerja PowerShell, dan runbook grafis. Untuk detailnya, lihat Runbook Azure Automation.

Automation menjalankan runbook Anda berdasarkan logika yang ditentukan di dalamnya. Jika runbook terganggu, runbook akan dimulai ulang dari awal. Perilaku ini mengharuskan Anda menulis runbook yang mendukung mulai ulang jika masalah sementara terjadi.

Memulai runbook di Azure Automation menciptakan pekerjaan yang merupakan instans eksekusi tunggal dari runbook. Setiap pekerjaan mengakses sumber daya Azure dengan membuat koneksi ke langganan Azure Anda. Pekerjaan hanya dapat mengakses sumber daya di pusat data Anda jika sumber daya tersebut dapat diakses dari cloud publik.

Azure Automation menugaskan pekerja untuk menjalankan setiap pekerjaan selama eksekusi runbook. Meskipun pekerja dibagikan oleh banyak akun Azure, pekerjaan dari akun Automation yang berbeda terpisah satu sama lain. Anda tidak dapat mengontrol pekerja yang menangani permintaan pekerjaan Anda.

Saat Anda melihat daftar runbook di portal Microsoft Azure, daftar ini menunjukkan status setiap pekerjaan yang telah dimulai untuk setiap runbook. Azure Automation menyimpan log pekerjaan selama maksimal 30 hari.

Diagram berikut menunjukkan siklus hidup pekerjaan runbook untuk runbook PowerShell, runbook PowerShell Workflow, dan runbook grafis.

Job Statuses - PowerShell Workflow

Catatan

Untuk informasi tentang menampilkan atau menghapus data pribadi, lihat Permintaan Subjek Data Azure untuk GDPR. Untuk informasi selengkapnya tentang GDPR, lihat bagian GDPR di Microsoft Trust Center dan bagian GDPR dari portal Service Trust.

Lingkungan eksekusi runbook

Runbook di Azure Automation dapat berjalan di Azure sandbox atau Hybrid Runbook Worker.

Saat runbook dirancang untuk mengautentikasi dan dijalankan terhadap sumber daya di Azure, runbook berjalan di kotak pasir Azure. Azure Automation menugaskan pekerja untuk menjalankan setiap pekerjaan selama eksekusi runbook di kotak pasir. Meskipun pekerja dibagikan oleh banyak akun Azure, pekerjaan dari akun Automation yang berbeda terpisah satu sama lain. Pekerjaan yang menggunakan sandbox yang sama terikat oleh batasan sumber daya sandbox. Lingkungan kotak pasir Azure tidak mendukung operasi interaktif. Ini mencegah akses ke semua server COM yang tidak diproses, dan tidak mendukung melakukan panggilan WMI ke penyedia Win32 di runbook Anda.  Skenario ini hanya didukung dengan menjalankan runbook pada Windows Hybrid Runbook Worker.

Anda juga dapat menggunakan Hybrid Runbook Worker untuk menjalankan runbook langsung di komputer yang meng-host peran dan terhadap sumber daya lokal di lingkungan. Azure Automation menyimpan dan mengelola runbook lalu mengirimkannya ke satu atau beberapa komputer yang ditunjuk.

Mengaktifkan Azure Firewall di Azure Storage, Azure Key Vault, atau Azure SQL memblokir akses dari runbook Azure Automation untuk layanan tersebut. Akses akan diblokir bahkan ketika pengecualian firewall untuk mengizinkan layanan Microsoft tepercaya diaktifkan, karena Automation bukan bagian dari daftar layanan tepercaya. Dengan firewall yang diaktifkan, akses hanya dapat dilakukan dengan menggunakan Hybrid Runbook Worker dan titik akhir layanan jaringan virtual.

Catatan

  • Untuk berjalan pada Linux Hybrid Runbook Worker, skrip Anda harus ditandatangani dan pekerja dikonfigurasi sebagaimana mestinya. Atau, validasi tanda tangan harus dinonaktifkan.
  • Eksekusi runbook tidak boleh bergantung pada zona waktu kotak pasir.

Tabel berikut ini mencantumkan beberapa tugas eksekusi runbook dengan lingkungan eksekusi yang direkomendasikan yang dicantumkan untuk masing-masing tugas.

Tugas Rekomendasi Catatan
Terintegrasi dengan sumber daya Azure Azure Sandbox Di-host di Azure, autentikasi lebih sederhana. Jika Anda menggunakan Hybrid Runbook Worker di Azure VM, Anda dapat menggunakan autentikasi runbook dengan identitas terkelola.
Mendapatkan performa optimal untuk mengelola sumber daya Azure Azure Sandbox Skrip dijalankan di lingkungan yang sama dengan latensi lebih sedikit.
Meminimalkan biaya operasional Azure Sandbox Tidak ada overhead komputasi dan tidak perlu VM.
Menjalankan skrip jangka panjang Hybrid Runbook Worker Azure sandbox memiliki batas sumber daya.
Berkomunikasi dengan layanan lokal Hybrid Runbook Worker Mengakses langsung komputer host, atau sumber daya di lingkungan cloud lain atau lingkungan lokal.
Memerlukan perangkat lunak pihak ketiga dan executable Hybrid Runbook Worker Anda mengelola sistem operasi dan dapat memasang perangkat lunak.
Memantau file atau folder dengan runbook Hybrid Runbook Worker Menggunakan tugas Watcher pada Hybrid Runbook Worker.
Menjalankan skrip sumber daya intensif Hybrid Runbook Worker Azure sandbox memiliki batas sumber daya.
Menggunakan modul dengan persyaratan tertentu Hybrid Runbook Worker Beberapa contohnya adalah:
WinSCP - dependensi pada administrasi IIS winscp.exe
- dependensi pada mengaktifkan atau mengelola IIS
Memasang modul dengan penginstal Hybrid Runbook Worker Modul untuk sandbox harus mendukung penyalinan.
Menggunakan runbook atau modul yang memerlukan versi .NET Framework yang berbeda dari 4.7.2 Hybrid Runbook Worker Kotak pasir Azure mendukung .NET Framework 4.7.2, dan peningkatan ke versi yang berbeda tidak didukung.
Menjalankan skrip yang memerlukan elevasi Hybrid Runbook Worker Sandbox tidak memungkinkan elevasi. Dengan Hybrid Runbook Worker, Anda dapat menonaktifkan UAC dan menggunakan Invoke-Command saat menjalankan perintah yang memerlukan elevasi.
Menjalankan skrip yang memerlukan akses ke Windows Management Instrumentation (WMI) Hybrid Runbook Worker Pekerjaan yang berjalan di sandbox di cloud tidak dapat mengakses penyedia WMI.

Penyimpanan sementara dalam sandbox

Jika Anda perlu membuat file sementara sebagai bagian dari logika runbook, Anda dapat menggunakan folder Temp (yaitu, $env:TEMP) di Azure sandbox untuk runbook yang berjalan di Azure. Satu-satunya batasan adalah Anda tidak dapat menggunakan lebih dari 1 GB ruang disk, yang merupakan kuota untuk setiap kotak pasir. Saat bekerja dengan alur kerja PowerShell, skenario ini dapat menyebabkan masalah karena alur kerja PowerShell menggunakan titik pemeriksaan dan skrip dapat dicoba kembali dalam sandbox yang berbeda.

Dengan sandbox hibrid, Anda dapat menggunakan C:\temp berdasarkan ketersediaan penyimpanan pada Hybrid Runbook Worker. Namun, sesuai rekomendasi Azure VM, Anda tidak boleh menggunakan disk sementara di Windows atau Linux untuk data yang perlu dipertahankan.

Sumber

Runbook Anda harus menyertakan logika untuk menangani sumber daya, misalnya, VM, jaringan, dan sumber daya di jaringan. Sumber daya terkait dengan langganan Azure, dan runbook memerlukan kredensial yang sesuai untuk mengakses sumber daya apa pun. Untuk contoh penanganan sumber daya dalam runbook, lihat Menangani sumber daya.

Keamanan

Azure Automation menggunakan Pertahanan Microsoft untuk Cloud untuk menyediakan keamanan bagi sumber daya Anda dan mendeteksi bahaya dalam sistem Linux. Keamanan disediakan di seluruh beban kerja Anda, baik sumber daya berada di Azure atau lainnya. Lihat Pengenalan autentikasi di Azure Automation.

Pertahanan Microsoft untuk Cloud menempatkan batasan pada pengguna yang dapat menjalankan skrip apa pun, baik ditandatangani atau tidak ditandatangani, pada mesin virtual. Jika Anda adalah pengguna dengan akses root ke VM, Anda harus secara eksplisit mengonfigurasi komputer dengan tanda tangan digital atau menonaktifkannya. Jika tidak, Anda hanya dapat menjalankan skrip untuk menerapkan pembaruan sistem operasi setelah membuat akun Automation dan mengaktifkan fitur yang sesuai.

Langganan

Langganan Azure adalah perjanjian dengan Microsoft untuk menggunakan satu atau beberapa layanan berbasis cloud yang dikenakan biaya. Untuk Azure Automation, setiap langganan ditautkan ke akun Azure Automation, dan Anda dapat membuat beberapa langganan di akun tersebut.

Kredensial

Runbook memerlukan kredensial yang sesuai untuk mengakses sumber daya apa pun, baik untuk Azure atau sistem pihak ketiga. Kredensial ini disimpan di Azure Automation, Key Vault, dll.

Azure Monitor

Azure Automation memanfaatkan Azure Monitor untuk memantau operasi komputernya. Operasi ini memerlukan ruang kerja Log Analytics dan agen Log Analytics.

Agen Log Analytics untuk Windows

Agen Log Analytics for Windows bekerja sama dengan Azure Monitor untuk mengelola VM Windows dan komputer fisik. Komputer dapat berjalan baik di Azure atau di lingkungan di luar Azure, seperti pusat data lokal.

Catatan

Agen Log Analytics for Windows sebelumnya dikenal sebagai Microsoft Monitoring Agent (MMA).

Agen Log Analytics untuk Linux

Agen Log Analytics for Linux berfungsi sama dengan agen untuk Windows, tetapi menghubungkan komputer Linux ke Azure Monitor. Agen dipasang dengan akun layanan tertentu yang menjalankan perintah yang memerlukan izin root. Untuk informasi selengkapnya, lihat Akun layanan.

Log agen Log Analytics terletak di /var/opt/microsoft/omsagent/log/omsagent.log.

Izin runbook

Runbook memerlukan izin untuk autentikasi ke Azure, melalui kredensial. Lihat Ringkasan autentikasi Azure Automation.

Modul

Azure Automation menyertakan modul PowerShell berikut ini:

  • Orchestrator.AssetManagement.Cmdlets - berisi beberapa cmdlet internal yang hanya tersedia saat Anda menjalankan runbook di lingkungan kotak pasir Azure, atau pada Windows Hybrid Runbook Worker. Cmdlet ini dirancang untuk digunakan sebagai ganti cmdlet Azure PowerShell untuk berinteraksi dengan sumber daya Azure Automation Anda.
  • Az.Automation - modul PowerShell yang direkomendasikan untuk berinteraksi dengan Azure Automation yang menggantikan modul Otomatisasi AzureRM. Modul Az.Automation tidak disertakan secara otomatis saat Anda membuat akun Automation dan Anda perlu mengimpornya secara manual.
  • AzureRM.Automation - diinstal secara default saat Anda membuat akun Automation.

Juga didukung adalah modul yang dapat diinstal, berdasarkan cmdlet yang diperlukan runbook dan konfigurasi DSC Anda. Untuk detail modul yang tersedia untuk runbook dan konfigurasi DSC Anda, lihat Mengelola modul di Azure Automation.

Sertifikat

Azure Automation menggunakan sertifikat untuk autentikasi ke Azure atau menambahkannya ke Azure atau sumber daya pihak ketiga. Sertifikat disimpan dengan aman untuk akses oleh runbook dan konfigurasi DSC.

Runbook Anda dapat menggunakan sertifikat yang ditandatangani sendiri, yang tidak ditandatangani oleh otoritas sertifikat (CA). Lihat Membuat sertifikat baru.

Pekerjaan

Azure Automation mendukung lingkungan untuk menjalankan pekerjaan dari akun Automation yang sama. Satu runbook dapat memiliki banyak pekerjaan yang berjalan pada satu waktu. Semakin banyak pekerjaan yang Anda jalankan pada saat yang sama, semakin sering pekerjaan dapat dikirim ke sandbox yang sama. Maksimal 10 pekerjaan dapat berjalan di kotak pasir. Kotak pasir akan dihapus ketika tidak ada pekerjaan yang dijalankan di dalamnya; oleh karena itu, seharusnya tidak digunakan untuk menyimpan file.

Pekerjaan yang berjalan dalam proses sandbox yang sama dapat memengaruhi satu sama lain. Salah satu contohnya adalah menjalankan cmdlet Disconnect-AzAccount. Eksekusi cmdlet ini memutus sambungan setiap pekerjaan runbook dalam proses sandbox bersama. Untuk contoh penanganan skenario ini, lihat Mencegah pekerjaan bersamaan.

Catatan

Pekerjaan PowerShell dimulai dari runbook yang berjalan dalam Azure sandbox mungkin tidak berjalan dalam mode bahasa PowerShell penuh.

Status pekerjaan

Tabel berikut ini menjelaskan status yang dimungkinkan untuk pekerjaan. Anda dapat melihat ringkasan status untuk semua pekerjaan runbook atau menelusuri detail pekerjaan runbook tertentu di portal Microsoft Azure. Anda juga dapat mengonfigurasi integrasi dengan ruang kerja Log Analytics untuk meneruskan status pekerjaan runbook dan aliran pekerjaan. Untuk informasi selengkapnya tentang terintegrasi dengan log Azure Monitor, lihat Meneruskan status pekerjaan dan aliran pekerjaan dari Automation ke log Azure Monitor. Lihat juga Mendapatkan status pekerjaan untuk contoh bekerja dengan status dalam runbook.

Keadaan Deskripsi
Mengaktifkan Pekerjaan sedang diaktifkan.
Selesai Pekerjaan berhasil diselesaikan.
Gagal Runbook grafis atau PowerShell Workflow gagal dikompilasi. Runbook PowerShell gagal dimulai atau pekerjaan memiliki pengecualian. Lihat Jenis runbook Azure Automation.
Gagal, menunggu sumber daya Pekerjaan gagal karena mencapai batas pembagian adil tiga kali dan dimulai dari titik pemeriksaan yang sama atau dari awal runbook setiap kali.
Dalam antrean Pekerjaan ini menunggu sumber daya pada pekerja Automation tersedia sehingga dapat dimulai.
Melanjutkan Sistem melanjutkan pekerjaan setelah ditangguhkan.
Sedang berjalan Pekerjaan sedang berjalan.
Berjalan, menunggu sumber daya Pekerjaan telah dibongkar karena mencapai batas pembagian yang adil. Pekerjaan akan segera dilanjutkan dari titik pemeriksaan terakhirnya.
Memulai Pekerjaan telah ditugaskan untuk pekerja, dan sistem memulainya.
Dihentikan Pekerjaan dihentikan oleh pengguna sebelum selesai.
Menghentikan Sistem menghentikan pekerjaan.
Ditangguhkan Berlaku hanya untuk runbook grafis PowerShell Workflow. Pekerjaan ditangguhkan oleh pengguna, oleh sistem, atau oleh perintah dalam runbook. Jika runbook tidak memiliki titik pemeriksaan, runbook dimulai dari awal. Jika memiliki titik pemeriksaan, ia dapat memulai lagi dan melanjutkan dari titik pemeriksaan terakhirnya. Sistem hanya menangguhkan runbook ketika pengecualian terjadi. Secara default, variabel ErrorActionPreference diatur ke Lanjutkan, menunjukkan bahwa pekerjaan terus berjalan saat terjadi kesalahan. Jika variabel preferensi diatur ke Berhenti, pekerjaan akan menangguhkan kesalahan.
Menangguhkan Berlaku hanya untuk runbook grafis PowerShell Workflow. Sistem mencoba menangguhkan pekerjaan atas permintaan pengguna. Runbook harus mencapai titik pemeriksaan berikutnya sebelum dapat ditangguhkan. Jika sudah melewati titik pemeriksaan terakhirnya, runbook selesai sebelum dapat ditangguhkan.

Pencatatan aktivitas

Eksekusi runbook di Azure Automation menulis detail dalam log aktivitas untuk akun Automation. Untuk detail penggunaan log, lihat Mengambil detail dari log Aktivitas.

Pengecualian

Bagian ini menjelaskan beberapa cara untuk menangani pengecualian atau masalah terputus-terputus dalam runbook Anda. Contohnya adalah pengecualian WebSocket. Penanganan pengecualian yang benar mencegah kegagalan jaringan sementara dari menyebabkan runbook Anda gagal.

ErrorActionPreference

Variabel ErrorActionPreference menentukan cara PowerShell merespons kesalahan yang tidak mengakhiri proses. Mengakhiri kesalahan selalu menghentikan proses dan tidak terpengaruh oleh ErrorActionPreference.

Ketika runbook menggunakan ErrorActionPreference, kesalahan yang biasanya tidak menghentikan proses seperti PathNotFound dari cmdlet Get-ChildItem menggagalkan penyelesaian runbook. Contoh berikut menunjukkan penggunaan ErrorActionPreference. Perintah Write-Output akhir tidak pernah dijalankan saat skrip berhenti.

$ErrorActionPreference = 'Stop'
Get-ChildItem -path nofile.txt
Write-Output "This message will not show"

Try Catch Finally

Try Catch Finally digunakan dalam skrip PowerShell untuk menangani kesalahan yang mengakhiri proses. Skrip dapat menggunakan mekanisme ini untuk menangkap pengecualian tertentu atau pengecualian umum. Pernyataan catch harus digunakan untuk melacak atau mencoba menangani kesalahan. Contoh berikut mencoba mengunduh file yang tidak ada. Ini menangkap pengecualian System.Net.WebException dan mengembalikan nilai terakhir untuk pengecualian lainnya.

try
{
   $wc = new-object System.Net.WebClient
   $wc.DownloadFile("http://www.contoso.com/MyDoc.doc")
}
catch [System.Net.WebException]
{
    "Unable to download MyDoc.doc from http://www.contoso.com."
}
catch
{
    "An error occurred that could not be resolved."
}

Lempar

Throw dapat digunakan untuk menghasilkan kesalahan yang mengakhiri proses. Mekanisme ini dapat berguna saat mendefinisikan logika Anda sendiri dalam runbook. Jika skrip memenuhi kriteria yang harus menghentikannya, skrip dapat menggunakan pernyataan throw untuk berhenti. Contoh berikut menggunakan pernyataan ini untuk menampilkan parameter fungsi yang diperlukan.

function Get-ContosoFiles
{
  param ($path = $(throw "The Path parameter is required."))
  Get-ChildItem -Path $path\*.txt -recurse
}

Kesalahan

Runbook Anda harus menangani kesalahan. Azure Automation mendukung dua jenis kesalahan PowerShell, mengakhiri dan tidak mengakhiri proses.

Kesalahan yang mengakhiri proses menghentikan eksekusi runbook ketika terjadi. Runbook berhenti dengan status tugas Gagal.

Kesalahan yang tidak mengakhiri proses memungkinkan skrip berlanjut bahkan setelah kesalahan terjadi. Contoh kesalahan yang tidak mengakhiri proses adalah kesalahan yang terjadi ketika runbook menggunakan cmdlet Get-ChildItem dengan jalur yang tidak ada. PowerShell melihat bahwa jalur tidak ada, menampilkan kesalahan, dan melanjutkan ke folder berikutnya. Kesalahan dalam kasus ini tidak mengatur status pekerjaan runbook ke Gagal, dan pekerjaan bahkan mungkin selesai. Untuk memaksa runbook berhenti pada kesalahan yang tidak mengakhiri proses, Anda dapat menggunakan cmdlet ErrorAction Stop.

Proses panggilan

Runbook yang berjalan di Azure sandbox tidak mendukung proses panggilan, seperti executables(file .exe) atau subproses. Alasan untuk ini adalah Azure sandbox adalah proses bersama yang dijalankan dalam kontainer yang mungkin tidak dapat mengakses semua API yang mendasarinya. Untuk skenario yang mengharuskan perangkat lunak pihak ketiga atau panggilan ke subproses, Anda harus menjalankan runbook pada Hybrid Runbook Worker.

Karakteristik perangkat dan aplikasi

Pekerjaan Runbook di Azure sandbox tidak dapat mengakses karakteristik perangkat atau aplikasi apa pun. API yang paling umum digunakan untuk mengkueri metrik performa pada Windows adalah WMI, dengan beberapa metrik umum berupa memori dan penggunaan CPU. Namun, API apa pun yang digunakan tidak masalah karena pekerjaan yang berjalan di cloud tidak dapat mengakses implementasi Microsoft dari Web-Based Enterprise Management (WBEM). Platform ini dibangun pada Common Information Model (CIM), memberikan standar industri untuk menentukan karakteristik perangkat dan aplikasi.

Webhook

Layanan eksternal, misalnya, Azure DevOps Services dan GitHub, dapat memulai runbook di Azure Automation. Untuk melakukan jenis startup ini, layanan menggunakan webhook melalui satu permintaan HTTP. Penggunaan webhook memungkinkan runbook dimulai tanpa implementasi fitur Azure Automation lengkap.

Sumber Daya Bersama

Untuk berbagi sumber daya di antara semua runbook di cloud, Azure menggunakan konsep yang disebut pembagian adil. Dengan menggunakan pembagian yang adil, Azure untuk sementara membongkar atau menghentikan pekerjaan apa pun yang telah berjalan selama lebih dari tiga jam. Pekerjaan untuk runbook PowerShell dan runbook Python dihentikan dan tidak dimulai ulang, dan status pekerjaan menjadi Dihentikan.

Untuk tugas Azure Automation yang sudah berjalan lama, sebaiknya gunakan Pekerja Runbook Hibrid. Hybrid Runbook Workers tidak dibatasi oleh pembagian yang adil, dan tidak memiliki batasan durasi runbook dapat dieksekusi. Batas pekerjaan lainnya berlaku untuk Azure sandbox dan Hybrid Runbook Workers. Meskipun Hybrid Runbook Workers tidak dibatasi oleh batas pembagian yang adil tiga jam, Anda harus mengembangkan runbook untuk dijalankan pada pekerja yang mendukung mulai ulang dari masalah infrastruktur lokal yang tidak terduga.

Opsi lain adalah mengoptimalkan runbook menggunakan runbook turun. Misalnya, runbook Anda mungkin melakukan loop melalui fungsi yang sama pada beberapa sumber daya, misalnya, dengan operasi database pada beberapa database. Anda dapat memindahkan fungsi ini ke runbook turunan dan meminta runbook Anda memanggilnya menggunakan Start-AzAutomationRunbook. Runbook turunan dijalankan secara paralel dalam proses terpisah.

Menggunakan runbook turunan mengurangi jumlah total waktu untuk runbook induk selesai. Runbook Anda dapat menggunakan cmdlet Get-AzAutomationJob untuk memeriksa status pekerjaan untuk runbook turunan jika masih memiliki lebih banyak operasi setelah turunan selesai.

Langkah berikutnya