Öğretici: Python 3 runbook 'u oluşturma (Önizleme)

Bu öğreticide, Azure Otomasyonu 'nda Python 3 runbook (Önizleme) oluşturma işlemi adım adım açıklanmaktadır. Python runbook 'ları Python 2 ve 3 altında derlenir. Azure portal metin düzenleyicisini kullanarak runbook 'un kodunu doğrudan düzenleyebilirsiniz.

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

Önkoşullar

Bu öğreticiyi tamamlamak için aşağıdakiler gerekir:

Yeni runbook oluştur

Merhaba Dünya metin çıkışı veren basit bir runbook oluşturarak başlayın.

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

    Automation hesabı sayfası size bu hesaptaki kaynakların hızlı bir görünümünü sağlar. Birkaç varlığınız zaten olmalıdır. Bu varlıkların çoğu, yeni bir Otomasyon hesabına otomatik olarak dahil edilen modüllerdir. Ayrıca, önkoşullardabahsedilen farklı çalıştır hesabı kimlik bilgisi varlığına de sahip olmanız gerekir.

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

  3. Yeni bir runbook oluşturmak için runbook Ekle ' yi seçin.

  4. Runbook 'A Myfirstrunbook-Python adını verin.

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

  6. Runbook 'u oluşturmak için Oluştur ' u seçin ve metin düzenleyicisini açın.

Runbook 'a kod ekleme

Artık metni yazdırmak için basit bir komut eklersiniz Hello World .

print("Hello World!")

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

Runbook'u test etme

Runbook’u üretimde kullanılabilir hale getirmek üzere yayımlamadan önce düzgün çalıştığından emin olmak için test etmeniz gerekir. 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üleyebilirsiniz.

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

  2. Testi başlatmak için Başlat ' ı seçin. Etkinleştirilen tek seçenek bu olmalıdır.

  3. Bir runbook işi oluşturulur ve durumu görüntülenir. İş durumu, bulutta bir runbook worker 'ın kullanılabilir hale gelmesini beklediğini belirten sıraya alındı olarak başlar. Bir çalışan işi talep ettiği zaman başlayacak şekilde değişir ve ardından runbook aslında çalışmaya başladığında çalışır .

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

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

Runbook 'u yayımlama ve başlatma

Oluşturduğunuz runbook hala taslak modunda. Bunu üretimde çalıştırmadan önce yayımlamanız gerekir. Bir runbook yayımladığınızda, var olan yayımlanmış sürümün üzerine taslak sürümünü yazın. Bu durumda, henüz runbook 'u oluşturduğunuz için yayınlanmış bir sürümdür.

  1. Runbook 'u yayımlamak için Yayımla ' yı seçin ve istendiğinde Evet ' e tıklayın.

  2. Runbook 'u runbook 'ları sayfasında görüntülemek için sola kaydırırsanız yayımlanmış bir yazma durumu görmeniz gerekir.

  3. Myfirstrunbook-Python3 bölmesini görüntülemek için sağ tarafa geri kaydırın.

    Üstteki seçenekler, runbook 'u başlatabilir, runbook 'u görüntüleyebilir veya gelecekte bir süre sonra başlayacak şekilde zamanlayabilirsiniz.

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

  5. Oluşturduğunuz runbook işi için bir bölmesi açılır. Bu bölmeyi kapatabilir, ancak işin ilerlemesini izleyebilmeniz için açık bırakalım.

  6. İş durumu Iş özetinde gösterilir ve Runbook 'u test ettiğinizde gördüğünüz durumları eşleştirir.

  7. Runbook durumu tamamlandı olarak gösterildikten sonra Çıkış' ı seçin. Burada görebileceğiniz Çıkış bölmesi açılır Hello World .

  8. Çıkış bölmesini kapatın.

  9. Runbook işinin akışlar bölmesini açmak Için Tüm Günlükler ' i seçin. Yalnızca Hello World Çıkış akışında görmeniz gerekir. Ancak bu bölme, runbook 'a yazıyorsa ayrıntılı ve hata gibi bir runbook işi için diğer akışları gösterebilir.

  10. Myfirstrunbook-Python3 bölmesine dönmek için akışlar bölmesini ve bölmesini kapatın.

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

  12. Bu işi, runbook 'u başlattığınızda görüntülediğiniz aynı bölmesini açmak için seçebilirsiniz. Bu bölme, zaman içinde geri dönmenizi ve belirli bir runbook için oluşturulan herhangi bir işin ayrıntılarını görüntülemenizi sağlar.

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

Runbook uygulamanızı test ettiniz ve yayımladınız, ancak şu ana kadar faydalı bir şey yapmadı. Bu runbook’un Azure kaynaklarını yönetmesini istiyorsunuz. Bunu yapmak için betiğin Otomasyon hesabınızdan farklı çalıştır hesabı kimlik bilgilerini kullanarak kimlik doğrulaması yapması gerekir.

Not

Farklı Çalıştır sertifikası olması için, Otomasyon hesabı farklı çalıştır hesabıyla oluşturulmuş olmalıdır. Otomasyon hesabınız farklı çalıştır hesabıyla oluşturulmadıysa, Python Için Azure Yönetim kitaplıklarıyla kimlik doğrulama veya Farklı Çalıştır hesabı oluşturmabölümünde açıklandığı gibi kimlik doğrulaması yapabilirsiniz.

  1. Myfirstrunbook-Python3 bölmesinde Düzenle seçeneğini belirleyerek metinsel düzenleyiciyi açın.

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

    import os
    from azure.mgmt.compute import ComputeManagementClient
    import azure.mgmt.resource
    import automationassets
    
    def get_automation_runas_credential(runas_connection):
        from OpenSSL import crypto
        import binascii
        from msrestazure import azure_active_directory
        import adal
    
        # Get the Azure Automation RunAs service principal certificate
        cert = automationassets.get_automation_certificate("AzureRunAsCertificate")
        pks12_cert = crypto.load_pkcs12(cert)
        pem_pkey = crypto.dump_privatekey(crypto.FILETYPE_PEM,pks12_cert.get_privatekey())
    
        # Get run as connection information for the Azure Automation service principal
        application_id = runas_connection["ApplicationId"]
        thumbprint = runas_connection["CertificateThumbprint"]
        tenant_id = runas_connection["TenantId"]
    
        # Authenticate with service principal certificate
        resource ="https://management.core.windows.net/"
        authority_url = ("https://login.microsoftonline.com/"+tenant_id)
        context = adal.AuthenticationContext(authority_url)
        return azure_active_directory.AdalAuthentication(
        lambda: context.acquire_token_with_client_certificate(
                resource,
                application_id,
                pem_pkey,
                thumbprint)
        )
    
    # Authenticate to Azure using the Azure Automation RunAs service principal
    runas_connection = automationassets.get_automation_connection("AzureRunAsConnection")
    azure_credential = get_automation_runas_credential(runas_connection)
    

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

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

VM 'yi başlatmak için işlem istemcisini kullanın. Aşağıdaki kodu runbook 'a ekleyin:

# Initialize the compute management client with the Run As credential and specify the subscription to work against.
compute_client = ComputeManagementClient(
    azure_credential,
    str(runas_connection["SubscriptionId"])
)


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

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

VM 'nin başlatıldığı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ıyor. Şimdi Giriş parametrelerinden bu değerleri alan kodu ekleyelim.

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

import sys

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

Bu, modülünü içeri aktarır sys ve kaynak grubunu ve VM adlarını tutmak için iki değişken oluşturur. Bağımsız değişken listesinin öğesi, sys.argv[0] , betiğin adı olduğunu ve Kullanıcı tarafından giriş olmadığı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.start(
    resource_group_name, vm_name)
async_vm_start.wait()

Test bölmesinden ya da yayımlanmış bir runbook olarak bir Python runbook 'u başlattığınızda, Parametreler altındaki runbook 'u Başlat sayfasında parametrelerin değerlerini girebilirsiniz.

İlk kutuya bir değer girmeyi başlattıktan sonra, ikinci olarak bir belirir ve bu şekilde gerektiği kadar parametre değeri girebilirsiniz.

Değerler dizideki komut dosyasında, sys.argv yeni eklediğiniz kodda olduğu gibi kullanılabilir.

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

Parametre değerlerini girin

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

<a name="error-handling-in-python">Python 'da hata işleme

Ayrıca, Python runbook 'larınızdan uyarı, hata ve hata ayıklama akışları gibi çeşitli akışlar almak için aşağıdaki kuralları da kullanabilirsiniz.

print(&quot;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 bloğunda kullanılan bu kural gösterilmektedir try...except .

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

Sonraki adımlar