Eğitim: Python 3.8 runbook oluşturma

Bu öğretici, Azure Otomasyonu'nda Python 3.8 runbook'u oluşturma işleminde size yol gösterir. Python runbook'ları Python 2.7 ve 3.8 altında derlenebilir Azure portalındaki metin düzenleyicisini kullanarak runbook'un kodunu doğrudan düzenleyebilirsiniz.

  • Basit bir Python runbook'u oluşturma
  • Runbook'u test edin ve yayımlayın
  • Runbook işinin durumunu çalıştırma ve izleme
  • Azure sanal makinesini runbook parametreleri ile başlatmak için runbook'u güncelle

Önkoşullar

Bu eğitimi tamamlamak için şunlara ihtiyacınız olacak:

  • Bir Azure aboneliği. Henüz bir aboneliğiniz yoksa MSDN abone avantajlarınızı etkinleştirebilir veya ücretsiz bir hesaba kaydolabilirsiniz.

  • Runbook'u tutmak ve Yönetilen Kimlikler kullanarak Azure kaynaklarında kimlik doğrulaması yapmak için bir Otomasyon hesabı. Otomasyon hesabını oluşturduğunuzda sizin için otomatik olarak bir yönetilen kimlik oluşturulur.

  • Azure sanal makinesi. Bu öğretici sırasında makineyi başlatacak ve durduracaksınız, dolayısıyla bu sanal makine bir üretim amacıyla kullanılmamalıdır.

Yeni bir runbook oluşturun

Başlangıç olarak Hello World metninin çıkışını veren basit bir runbook oluşturacaksınız.

  1. Azure portalında Otomasyon hesabınızı açın.

    Otomasyon hesabı sayfası, bu hesaptaki kaynakların hızlı bir görünümünü sağlar. Zaten bazı varlıklarınız olmalıdır. Bu varlıkların çoğu, otomatik olarak yeni bir Otomasyon hesabına dahil edilen modüllerdir.

    Ayrıca , önkoşullarda belirtilen bir yönetilen kimliği etkinleştirmiş olmanız gerekir. Hesap Ayarları'nın altındaki Kimlik kaynağını görüntüleyerek bunu doğrulayabilirsiniz.

  2. Runbook'ların listesini açmak için İşlem Otomasyonu altında Runbook'lar'ı seçin.

  3. Runbook oluştur seçeneğini seçerek yeni bir runbook oluşturun.

  4. Runbook'a MyFirstRunbook-Python adını verin.

  5. Runbook türü için Python'ı seçin.

  6. Çalışma Zamanı sürümü için Python 3.8'i seçin.

  7. Runbook'u oluşturmak ve metin düzenleyicisini açmak için Oluştur'u seçin.

Runbook'a kod ekleyin

Şimdi metnini Hello Worldyazdırmak için basit bir komut ekleyebilirsiniz.

print("Hello World!")

Runbook'u kaydetmek için Kaydet'i seçin.

Runbook'u test edin

Runbook'u üretimde kullanılabilir hale getirmek için yayımlamadan önce düzgün çalıştığından emin olmak için test etmek istiyorsunuz. Bir runbook'u test ettiğinizde taslak sürümünü çalıştırır ve çıktısını etkileşimli olarak görüntülersiniz.

  1. Test bölmesini açmak için Test bölmesini seçin.

  2. Testi başlatmak için Başlat'ı seçin. Bu seçenek tek etkin seçenek olmalıdır.

  3. Bir runbook işi oluşturulur ve durumu görüntülenir. İş durumu Kuyruğa Alındı olarak başlar ve bulutta bir runbook çalışanının kullanılabilir olmasını beklediğini belirtir. Çalışan işi talep ettiğinde Başlatılıyor ve runbook gerçekten çalışmaya başladığında Çalışıyor olarak değişir.

  4. Runbook işi tamamlandığında, çıktısı görüntülenir. Bu durumda, şunu görmeniz gerekir Hello World.

  5. Tuvale dönmek için Test bölmesini kapatın.

Runbook'u yayımla ve çalıştır

Oluşturduğunuz runbook hala taslak modunda. Üretimde çalıştırabilmek için önce yayımlamanız gerekir. Runbook'u yayımladığınızda taslak sürümü mevcut yayımlanmış sürümün üzerine yazarsınız. Bu durumda, runbook'u yeni oluşturduğunuz için henüz yayımlanmış bir sürümünüz yoktur.

  1. Runbook'u yayımlamak için Yayımla'yı ve sorulduğunda Evet'i seçin.

  2. MyFirstRunbook_python bölmesini kapatırsanız, Runbooks sayfasına geri dönersiniz ve burada Yazma Durumu olarak Yayımlandı görürsünüz.

  3. Listeden MyFirstRunbook-Python adını seçtiğinizde MyFirstRunbook-Python bölmesine geri dönersiniz.

    Üstteki seçenekler runbook'u başlatmanıza, runbook'u görüntülemenize, runbook'u düzenlemenize, gelecekte bir zaman başlayacak şekilde zamanlamanıza ve diğer eylemlere olanak sağlar.

  4. Başlat'ı ve ardından Runbook'u Başlat bölmesi açıldığında Tamam'ı seçin.

  5. Oluşturduğunuz runbook görevi için bir Görev paneli açılır. Bu bölmeyi kapatabilirsiniz, ancak işin ilerleme durumunu izleyebilmenizi sağlamak için açık tutalım.

  6. İş durumu, Temel Parçalar'ın altındaki Durum alanında gösterilir. Buradaki değerler runbook'u test ettiğinizde durum değerleriyle eşleşmektedir.

  7. Runbook durumu Tamamlandı olarak gösterildikten sonra Çıkış sekmesini seçin. Çıkış sekmesinde Hello World öğesini görebilirsiniz.

  8. Çıkış sekmesini kapatın.

  9. Runbook işinin akışlarını görüntülemek için Tüm Günlükler sekmesini seçin. Yalnızca Hello World çıkış akışında görmelisiniz. Ancak bu sekme, runbook bir işe yazdığı takdirde Ayrıntılı ve Hata gibi diğer akışları gösterebilir.

  10. MyFirstRunbook-Python bölmesine dönmek için İşler bölmesini kapatın.

  11. Bu runbook'un İşler kaynak sayfasını açmak için İşler kaynağı'nı seçin. Bu sayfada, bu runbook tarafından oluşturulan tüm görevler listelenir. İşi yalnızca bir kez çalıştırdığınız için yalnızca bir işi listelenmiş olarak görmeniz gerekir.

  12. Runbook'u başlattığınızda görüntülediğiniz aynı Görev bölmesini açmak için bu görevi seçebilirsiniz. Bu bölme, zamana geri dönmenizi ve belirli bir runbook için oluşturulan tüm işlerin ayrıntılarını görüntülemenizi sağlar.

Azure kaynaklarını yönetmek için kimlik doğrulaması ekleme

Runbook'unuzu test ettiniz ve yayımladınız, ancak şu ana kadar yararlı bir şey yapmadınız. Azure kaynaklarını yönetmesini istiyorsunuz. Kaynakları yönetmek için komut dosyasının kimliğini doğrulaması gerekir.

Kimlik doğrulaması için önerilen yöntem yönetilen kimliktir. Azure Otomasyonu Hesabı oluşturduğunuzda, sizin için otomatik olarak bir yönetilen kimlik oluşturulur.

Bu örnekleri kullanmak için Otomasyon Hesabının Python Paketleri kaynağına aşağıdaki paketleri ekleyin. Bu bağlantılarla bu paketler için WHL dosyalarını ekleyebilirsiniz.

Bu paketleri eklediğinizde runbook'unuzla eşleşen bir çalışma zamanı sürümü seçin.

Uyarı

Aşağıdaki kod çalışma zamanı sürümü 3.8 ile test edilmiştir.

İdare edilen kimlik

Yönetilen kimliği kullanmak için etkinleştirildiğinden emin olun:

  • Otomasyon hesabı için Yönetilen kimliğin etkinleştirilip etkinleştirilmediğini doğrulamak için Otomasyon hesabı>Hesap Ayarları>Kimliğinize gidin ve DurumuAçık olarak ayarlayın.
  • Yönetilen kimlik, kaynağı yönetmek için atanmış bir role sahiptir. Bu sanal makine kaynağını yönetme örneğinde, Sanal Makineyi içeren kaynak grubuna "Sanal Makine Katkıda Bulunanı" rolünü ekleyin. Daha fazla bilgi için bkz. Azure portalını kullanarak Azure rolleri atama

Kimlik yönetme rolü yapılandırıldığında kod eklemeye başlayabilirsiniz.

  1. MyFirstRunbook-Python bölmesinde Düzenle'yi seçerek metin düzenleyicisini açın.

  2. Azure'da kimlik doğrulaması yapmak için aşağıdaki kodu ekleyin:

#!/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)

Python İşlem istemcisi oluşturmak ve VM'yi başlatmak için kod ekleme

Azure VM'leriyle çalışmak için Python için Azure İşlem istemcisinin bir örneğini oluşturun.

# 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.')

Burada MyResourceGroup , VM'yi içeren kaynak grubunun adı ve TestVM başlatmak istediğiniz VM'nin adıdır.

VM'yi başlattığını görmek için runbook'u yeniden test edin ve çalıştırın.

Giriş parametrelerini kullanma

Runbook şu anda kaynak grubunun ve VM'nin adları için sabit kodlanmış değerler kullanır. Şimdi giriş parametrelerinden bu değerleri alan kodu ekleyelim.

Parametre değerlerini almak için değişkenini sys.argv kullanırsınız. Aşağıdaki kodu diğer import deyimlerden hemen sonra runbook'a ekleyin:

import sys

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

Bu kod modülü içeri aktarır sys ve kaynak grubu ve VM adlarını tutmak için iki değişken oluşturur. Bağımsız değişken listesinin sys.argv[0] öğesinin betiğin adı olduğuna ve kullanıcı tarafından giriş yapılmadığına dikkat edin.

Artık runbook'un son iki satırını sabit kodlanmış değerler kullanmak yerine giriş parametresi değerlerini kullanacak şekilde değiştirebilirsiniz:

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

Python runbook'unu Test bölmesinden veya yayımlanmış bir runbook olarak başlattığınızda, Parametreler'in altındaki Runbook'u Başlat sayfasına parametrelerin değerlerini girebilirsiniz.

İlk kutuya bir değer girmeye başladıktan sonra ikinci bir değer görüntülenir ve böylece gerektiği kadar parametre değeri girebilirsiniz.

Değerler, az önce eklediğiniz kodda sys.argv olduğu gibi dizideki betikte kullanılabilir.

İlk parametrenin değeri olarak kaynak grubunuzun adını ve ikinci parametrenin değeri olarak başlatacak VM'nin adını girin.

Parametre değerlerini girin

Runbook'u başlatmak için Tamam'ı seçin. Runbook, belirttiğiniz VM'yi çalıştırır ve başlatır.

Python'da hata işleme

Python runbook'larınızdan WARNING, ERROR ve DEBUG akışları gibi çeşitli akışları almak için aşağıdaki kuralları da kullanabilirsiniz.

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

Aşağıdaki örnekte bir try...except blokta kullanılan bu kural gösterilmektedir.

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

Sonraki Adımlar