Tutorial: Membuat runbook Python 3.8

Tutorial ini memandu Anda melalui pembuatan runbook Python 3.8 di Azure Automation. Runbook Python dikompilasi di bawah Python 2.7 dan 3.8 Anda dapat langsung mengedit kode runbook menggunakan editor teks di portal Azure.

  • Buat runbook Python sederhana
  • Uji dan terbitkan runbook
  • Menjalankan dan melacak status pekerjaan runbook
  • Memperbarui runbook untuk memulai mesin virtual Azure dengan parameter runbook

Prasyarat

Untuk menyelesaikan tutorial ini, Anda perlu:

  • Langganan Azure. Jika Anda tidak memiliki akun, Anda dapat mengaktifkan keuntungan pelanggan MSDN Anda atau mendaftar untuk akun gratis.

  • Akun Automation untuk menyimpan runbook dan mengautentikasi ke sumber daya Azure menggunakan Identitas Terkelola. Identitas terkelola secara otomatis dibuat untuk Anda saat Anda membuat akun Automation.

  • Komputer virtual Azure. Selama tutorial ini, Anda akan memulai dan menghentikan komputer ini, jadi seharusnya bukan VM produksi.

Membuat rubook baru

Anda mulai dengan membuat runbook sederhana yang menghasilkan teks Halo Dunia.

  1. Di portal Microsoft Azure, buka akun Automation Anda.

    Halaman akun Automation memberi Anda tampilan sekilas sumber daya di akun ini. Anda harus sudah memiliki beberapa aset. Sebagian besar aset tersebut adalah modul yang secara otomatis disertakan dalam akun Automation baru.

    Anda juga harus mengaktifkan identitas terkelola yang disebutkan dalam prasyarat. Anda dapat memverifikasinya dengan melihat sumber daya Identitas di bawah Pengaturan Akun.

  2. Pilih Runbook di bawah Proses Automation untuk membuka daftar runbook.

  3. Pilih Buat runbook untuk membuat runbook baru.

  4. Beri nama runbook MyFirstRunbook-Python.

  5. Pilih Python untuk jenis Runbook.

  6. Pilih Python 3.8 untuk versi Runtime.

  7. Pilih Buat untuk membuat runbook dan membuka editor teks.

Menambahkan kode ke runbook

Sekarang tambahkan perintah sederhana untuk mencetak teks Hello World.

print("Hello World!")

Pilih Simpan untuk menyimpan runbook.

Menguji runbook

Sebelum Anda menerbitkan runbook untuk membuatnya tersedia dalam produksi, uji runbook untuk memastikan bahwa runbook berfungsi dengan baik. Saat Menguji runbook, Anda menjalankan versi drafnya dan melihat outputnya secara interaktif.

  1. Pilih Panel uji untuk membuka panel Uji.

  2. Pilih Mulai untuk memulai pengujian. Opsi ini harus menjadi satu-satunya opsi yang diaktifkan.

  3. Pekerjaan runbook dibuat dan statusnya ditampilkan. Status pekerjaan dimulai sebagai Diantrekan, menunjukkan bahwa ia menunggu pekerja runbook di cloud tersedia. Ini berubah menjadi Mulai ketika pekerja mengklaim pekerjaan, dan kemudian Berjalan saat runbook benar-benar mulai berjalan.

  4. Ketika pekerjaan runbook selesai, outputnya ditampilkan. Dalam kasus ini, Anda akan melihat Hello World.

  5. Tutup panel Uji untuk kembali ke kanvas.

Menerbitkan dan memulai runbook

Runbook yang Anda buat masih dalam mode draf. Anda perlu menerbitkannya sebelum dapat menjalankannya dalam produksi. Saat menerbitkan runbook, Anda menimpa versi diterbitkan yang sudah ada dengan versi draf. Dalam kasus ini, Anda belum memiliki versi yang diterbitkan karena Anda baru saja membuat runbook.

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

  2. Jika Anda menutup panel MyFirstRunbook_python , Anda kembali ke halaman Runbook tempat Anda akan melihat Status PenulisanDiterbitkan.

  3. Pilih nama MyFirstRunbook-Python dalam daftar, Anda akan kembali ke panel MyFirstRunbook-Python .

    Opsi di bagian atas memungkinkan Anda untuk memulai runbook, melihat runbook, mengedit runbook, menjadwalkannya untuk memulai pada beberapa waktu di masa mendatang, dan tindakan lainnya.

  4. Pilih Mulai lalu pilih OK saat panel Mulai Runbook akan terbuka.

  5. Panel Pekerjaan dibuka untuk pekerjaan runbook yang Anda buat. Anda dapat menutup panel ini, tetapi mari kita tetap buka, sehingga Anda dapat watch kemajuan pekerjaan.

  6. Status pekerjaan ditampilkan di bidang Status di bawah Esensial. Nilai di sini cocok dengan nilai status saat Anda menguji runbook.

  7. Setelah status runbook menunjukkan Selesai, pilih tab Output . Di tab Output , Anda dapat melihat Hello World.

  8. Tutup tab Output .

  9. Pilih tab Semua Log untuk melihat aliran untuk pekerjaan runbook. Anda hanya akan melihat Hello World di aliran output. Namun, tab ini dapat menampilkan aliran lain untuk pekerjaan runbook, seperti Verbose dan Kesalahan, jika runbook menulis kepada mereka.

  10. Tutup panel Pekerjaan untuk kembali ke panel MyFirstRunbook-Python .

  11. Pilih Sumber daya pekerjaan untuk membuka halaman sumber daya Pekerjaan untuk runbook ini. Halaman ini mencantumkan semua pekerjaan yang dibuat oleh runbook ini. Anda hanya harus melihat satu pekerjaan terdaftar karena Anda hanya menjalankan pekerjaan sekali.

  12. Anda dapat memilih pekerjaan ini untuk membuka panel Pekerjaan yang sama dengan yang Anda lihat saat memulai runbook. Panel ini memungkinkan Anda untuk kembali ke masa lalu dan melihat detail pekerjaan yang dibuat untuk runbook tertentu.

Menambahkan autentikasi untuk mengelola sumber daya Azure

Anda telah menguji dan menerbitkan runbook Anda, tetapi sejauh ini tidak melakukan sesuatu yang berguna. Anda ingin membuatnya mengelola sumber daya Azure. Untuk mengelola sumber daya, skrip harus mengautentikasi.

Cara yang disarankan untuk mengautentikasi adalah dengan identitas terkelola. Saat Anda membuat Akun Azure Automation, identitas terkelola secara otomatis dibuat untuk Anda.

Untuk menggunakan sampel ini, tambahkan paket berikut di sumber daya Paket Python dari Akun Automation. Anda dapat menambahkan file WHL untuk paket ini dengan tautan ini.

Saat Anda menambahkan paket ini, pilih versi runtime yang cocok dengan runbook Anda.

Catatan

Kode berikut diuji dengan runtime versi 3.8.

Identitas Terkelola

Untuk menggunakan identitas terkelola, pastikan identitas tersebut diaktifkan:

  • Untuk memverifikasi apakah Identitas terkelola diaktifkan untuk akun Automation, bukaIdentitasPengaturan> Akun akun> Automation Anda dan atur Status ke Aktif.
  • Identitas terkelola memiliki peran yang ditetapkan untuk mengelola sumber daya. Dalam contoh pengelolaan sumber daya komputer virtual ini, tambahkan peran "Kontributor Komputer Virtual" pada grup sumber daya yang berisi Komputer Virtual. Untuk informasi selengkapnya, lihat Menetapkan peran Azure menggunakan portal Azure

Dengan peran kelola identitas yang dikonfigurasi, Anda dapat mulai menambahkan kode.

  1. Buka editor tekstual dengan memilih Edit di panel MyFirstRunbook-Python .

  2. Tambahkan kode berikut untuk melakukan autentikasi ke Azure:

#!/usr/bin/env python3
from azure.identity import DefaultAzureCredential
from azure.mgmt.compute import ComputeManagementClient

SUBSCRIPTION_ID="YOUR_SUBSCRIPTION_ID"

azure_credential = DefaultAzureCredential()

import os
import requests
# printing environment variables
endpoint = os.getenv('IDENTITY_ENDPOINT')+"?resource=https://management.azure.com/"
identityHeader = os.getenv('IDENTITY_HEADER')
payload={}
headers = {
'X-IDENTITY-HEADER' : identityHeader,
'Metadata' : True
}
response = requests.get(endpoint, headers)
print(response.text)

Tambahkan kode untuk membuat klien Python Compute dan memulai VM

Untuk bekerja dengan Azure VM, buat instansklien Azure Compute untuk Python.

# Initialize client with the credential and subscription.
compute_client = ComputeManagementClient(
    azure_credential,
    SUBSCRIPTION_ID
)

print('\nStart VM')
async_vm_start = compute_client.virtual_machines.begin_start(
    "MyResourceGroup", "TestVM")
async_vm_start.wait()
print('\nFinished start.')

Di mana MyResourceGroup adalah nama grup sumber daya yang berisi VM, dan TestVM adalah nama VM yang ingin Anda mulai.

Uji dan jalankan runbook lagi untuk melihat bahwa runbook tersebut memulai VM.

Menggunakan parameter input

Runbook saat ini menggunakan nilai yang dikodekan secara permanen untuk nama grup sumber daya dan VM. Sekarang mari kita tambahkan kode yang mendapatkan nilai ini dari parameter input.

Anda menggunakan variabel sys.argv untuk mendapatkan nilai parameter. Tambahkan kode berikut ke runbook segera setelah pernyataan import lainnya:

import sys

resource_group_name = str(sys.argv[1])
vm_name = str(sys.argv[2])

Kode ini mengimpor sys modul, dan membuat dua variabel untuk menahan grup sumber daya dan nama VM. Perhatikan bahwa elemen daftar argumen, sys.argv[0], adalah nama skrip, dan tidak diinput oleh pengguna.

Kini Anda dapat mengubah dua baris terakhir dari runbook untuk menggunakan nilai parameter input dan bukan menggunakan nilai yang dikodekan secara permanen:

async_vm_start = compute_client.virtual_machines.begin_start(
    resource_group_name, vm_name)
async_vm_start.wait()

Saat Anda memulai runbook Python, baik dari panel Uji maupun sebagai runbook yang diterbitkan, Anda dapat memasukkan nilai untuk parameter di halaman Mulai Runbook di bawah Parameter.

Setelah Anda mulai memasukkan nilai di kotak pertama, detik muncul, dan seterusnya, sehingga Anda dapat memasukkan nilai parameter sebanyak yang diperlukan.

Nilai tersedia untuk skrip dalam array sys.argv seperti dalam kode yang baru saja Anda tambahkan.

Masukkan nama grup sumber daya Anda sebagai nilai untuk parameter pertama, dan nama VM untuk memulai sebagai nilai parameter kedua.

Masukkan nilai parameter

Pilih OK untuk memulai runbook. Runbook berjalan dan memulai VM yang Anda tentukan.

Penanganan kesalahan di Python

Anda juga dapat menggunakan konvensi berikut untuk mengambil berbagai stream dari runbook Python Anda, termasuk stream PERINGATAN, KESALAHAN, dan DEBUG.

print("Hello World output")
print("ERROR: - Hello world error")
print("WARNING: - Hello world warning")
print("DEBUG: - Hello world debug")
print("VERBOSE: - Hello world verbose")

Contoh berikut menunjukkan konvensi ini digunakan dalam blok try...except.

try:
    raise Exception('one', 'two')
except Exception as detail:
    print ('ERROR: Handling run-time error:', detail)

Langkah berikutnya