Öğretici: Otomasyonda PowerShell İş Akışı runbook'u oluşturma

Bu öğretici, Azure Automation’da bir PowerShell İş Akışı runbook oluşturulmasını adım adım göstermektedir. PowerShell İş Akışı runbook'ları, Windows PowerShell İş Akışı'na dayalı metin runbook'larıdır. Azure portalındaki metin düzenleyicisini kullanarak runbook'un kodunu oluşturabilir ve düzenleyebilirsiniz.

Dekont

Bu makale PowerShell 5.1 için geçerlidir; PowerShell 7.1 (önizleme) ve PowerShell 7.2 iş akışlarını desteklemez.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • PowerShell İş Akışı runbook’u oluşturma
  • Runbook'u test edin ve yayımlayın
  • Runbook işinin durumunu çalıştırma ve izleme
  • Azure kaynaklarını yönetmek için kimlik doğrulaması ekleme
  • Azure sanal makinesini başlatmak için runbook parametrelerini güncelleştirme

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Önkoşullar

Yönetilen kimliklere izin atama

Sanal makineyi durdurmasına izin vermek için uygun yönetilen kimliğe izinler atayın. Runbook, Otomasyon hesabı sistem tarafından atanan yönetilen kimliği veya kullanıcı tarafından atanan yönetilen kimliği kullanabilir. Her kimliğe izin atamak için adımlar sağlanır. Aşağıdaki adımlarda Azure portalı kullanılır. PowerShell kullanmayı tercih ediyorsanız bkz . Azure PowerShell kullanarak Azure rolleri atama.

  1. Azure portalında oturum açın ve Otomasyon hesabınıza gidin.

  2. Hesap Ayarlar altında Kimlik (Önizleme) öğesini seçin.

  3. Sistem tarafından atanan sekmesindeki İzinler'in altında Azure rol atamaları'nı seçerek Azure rol atamaları sayfasını açın.

    Selecting Azure role assignments in portal.

  4. Rol ataması ekle (Önizleme) sayfasını açmak için + Rol ataması ekle (Önizleme) seçeneğini belirleyin.

    Add role assignments in portal.

  5. Uygun değerleri seçin.

    Özellik Description
    Scope Kapsam, rol atamasının uygulandığı bir kaynak kümesidir. Açılan listeden Kaynak Grubu'na tıklayın.
    Abonelik Bu alan aboneliğinizle otomatik olarak doldurulmalıdır.
    Kaynak Grubu Açılan listeden kimlik izinlerini vermek için kaynak grubunu seçin.
    Rol Açılan listeden DevTest Labs Kullanıcısı'nı seçin.
  6. Kaydet'i seçin ve ardından Sistem tarafından atanan sekmesine dönmek için Azure rol atamaları sayfasını kapatın.

  7. Kullanıcı tarafından atanan sekmesini seçin.

  8. Yönetilen Kimlik sayfasını açmak için listeden kullanıcı tarafından atanan yönetilen kimliğinizi seçin.

    Selecting user-assigned managed identity in portal.

  9. Daha sonra kullanmak üzere İstemci Kimliğini not alın.

    Showing Client ID for managed identity in portal

  10. Sol menüden Azure rol atamaları'nı seçin ve ardından + Rol ataması ekle (Önizleme) seçeneğini belirleyerek Rol ataması ekle (Önizleme) sayfasını açın.

    Add role assignments in portal for user-assigned identity.

  11. Uygun değerleri seçin.

    Özellik Description
    Scope Açılan listeden Kaynak Grubu'na tıklayın.
    Abonelik Bu alan aboneliğinizle otomatik olarak doldurulmalıdır.
    Kaynak Grubu Açılan listeden kimlik izinlerini vermek için kaynak grubunu seçin.
    Rol Açılan listeden DevTest Labs Kullanıcısı'nı seçin.
  12. Kaydet'i seçin ve kullanıcı tarafından atanan sekmesine dönmek için Azure rol atamaları sayfasını kapatın.

Yeni runbook oluşturma

Basit bir PowerShell İş Akışı runbook'u oluşturarak başlayın. Windows PowerShell İş Akışlarının bir avantajı da bir komutlar kümesini tipik bir betikteki gibi sırayla yürütmek yerine paralel olarak gerçekleştirebilmesidir.

Dekont

Yayın runbook'u oluşturma ile Azure portalında yeni bir deneyim sunulur. Runbook'lar dikey penceresi> Runbook oluştur'u seçtiğinizde, geçerli seçeneklerle yeni bir runbook oluştur sayfası açılır.

  1. Açık Otomasyon hesabı sayfanızdaki İşlem Otomasyonu altında Runbook'lar'ı seçin

    Create PowerShell workflow runbook from portal

  2. + Runbook oluştur'u seçin.

    1. Runbook'u adlandırın. Örneğin, test edin.
    2. Runbook türü açılan menüsünden PowerShell İş Akışı'nı seçin.
    3. Çalışma zamanı sürümü açılan listesinden 5.1'i seçin.
    4. İlgili Açıklamayı girin.
    5. Oluştur’u seçin.

    PowerShell workflow runbook options from portal

Runbook'a kod ekleme

Doğrudan runbook'a kod yazabilir veya Kitaplık denetiminden cmdlet'leri, runbook'ları ve varlıkları seçebilir ve bunları ilgili parametrelerle runbook'a ekleyebilirsiniz. Bu öğretici için doğrudan runbook'a kod yazarsınız.

Runbook'unuz şu anda yalnızca gerekli Workflow anahtar sözcük, runbook'un adı ve iş akışının tamamını kaplayan küme ayraçlarıyla boş.

Workflow MyFirstRunbook-Workflow
{
}
  1. Eşzamanlı olarak çalışacak birden çok komut içeren bir betik bloğu oluşturmak için Parallel anahtar sözcüğünü kullanabilirsiniz. Küme ayraçları arasına aşağıdaki kodu girin:

    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. Kaydet'i seçerek runbook'u kaydedin.

Runbook'u test etme

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

  1. Test sayfasını açmak için Test bölmesi'ni seçin.

  2. Testi başlatmak için Başlat'ı seçin. Bir runbook işi oluşturulur ve durumu bölmede görüntülenir.

    İş durumu Kuyruğa Alındı olarak başlar ve işin bulutta bir runbook çalışanının kullanılabilir olmasını beklediğini belirtir. Çalışan işi talep ettiğinde durum Başlatılıyor olarak değişir. Son olarak, runbook gerçekten çalışmaya başladığında durum Çalışıyor olur.

  3. Runbook işi tamamlandığında Test sayfası çıktısını görüntüler. Çıktı aşağıdaki görüntüye benzer görünmelidir:

    PowerShell workflow runbook parallel output

    Çıktıyı gözden geçirin. Komut da dahil olmak üzere bloktaki ParallelStart-Sleep her şey aynı anda yürütülür. Bloğun Parallel dışındaki komutlar, farklı tarih saat damgaları tarafından gösterildiği gibi sıralı olarak çalıştırılan komutlar.

  4. Tuvale dönmek için Test sayfasını kapatın.

Runbook'u yayımlama ve başlatma

Oluşturduğunuz runbook hala Taslak modundadır. Üretimde çalıştırabilmek için önce yayımlamanız gerekir. Bir runbook yayımladığınızda, Taslak sürümü mevcut Yayımlanmış sürümün üzerine yazarsınız. Örneğimizde, runbook’u henüz oluşturduğunuzdan, Yayımlanmış sürümünüz yok.

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

  2. Durum alanında artık Yayımlanan gösterilir. Runbook'u şimdi başlatmanıza, gelecekteki bir başlangıç saati zamanlamanıza veya runbook'un bir HTTP çağrısı aracılığıyla başlatılabilmesi için bir web kancası oluşturmanıza olanak sağlayan üst kısımdaki seçenekleri gözden geçirin. Başlat'ı seçin ve runbook'u başlatmak isteyip istemediğiniz sorulduğunda Evet'i seçin.

    PowerShell workflow runbook overview page

  3. Oluşturulan runbook işi için bir İş sayfası açılır. Bu durumda, işin ilerleme durumunu izleyebilebilmeniz için sayfayı açık bırakın. Durum alanı, runbook'u test ederken gördüğünüz durumla eşleşir.

    Screenshot of the runbook Job page.

  4. Runbook durumu Tamamlandı olarak gösterildikten sonra Çıkış'ı seçin. Çıkış, test çıkışına benzer görünmelidir.

  5. Runbook Genel Bakış sayfasına dönmek için İş sayfasını kapatın.

  6. Kaynaklar'ın altında İşler'i seçin. Bu sayfada runbook'unuz tarafından oluşturulan tüm işler listelenir. İşi yalnızca bir kez çalıştırdığınızdan, listede yalnızca bir iş görmeniz gerekir.

  7. Runbook'u başlattığınızda görüntülediğiniz aynı İş sayfasını açmak için işi seçin. Runbook için oluşturulan herhangi bir işin ayrıntılarını görüntülemek için bu sayfayı kullanın. Runbook Genel Bakış sayfasına dönmek için İş sayfasını kapatın.

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. Aboneliğin kimlik bilgilerini kullanarak kimlik doğrulaması yapmadığı sürece bunu yapamaz. Runbook, VM'ye karşı yönetim eylemini gerçekleştirmek üzere Azure'da kimlik doğrulaması yapmak için Otomasyon hesabının sistem tarafından atanan yönetilen kimliğini kullanır. Runbook, kullanıcı tarafından atanan yönetilen kimliği kullanacak şekilde kolayca değiştirilebilir.

  1. Genel Bakış'ı ve ardından Düzenle'yi seçerek metin düzenleyicisini açın.

  2. Mevcut kodu aşağıdakilerle değiştirin:

    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>"
    }
    

    Değişkenini $resourceGroup , kaynak grubunuzu temsil eden geçerli bir değerle düzenleyin.

  3. Runbook'un sistem tarafından atanan yönetilen kimlikle yürütülmesini istiyorsanız, kodu olduğu gibi bırakın. Kullanıcı tarafından atanan bir yönetilen kimlik kullanmayı tercih ediyorsanız:

    1. 9. satırdan öğesini kaldırın Connect-AzAccount -Identity.
    2. değerini ve ile Connect-AzAccount -Identity -AccountId <ClientId>değiştirin
    3. Daha önce edindiğiniz İstemci Kimliğini girin.
  4. Kaydet'i ve ardından Test bölmesini seçin.

  5. Testi başlatmak için Başlat'ı seçin. İşlem tamamlandıktan sonra, hesabınızdaki temel bilgilerin görüntülendiği aşağıdakine benzer bir çıktı görmeniz gerekir. Bu eylem, kimlik bilgilerinin geçerli olduğunu onaylar.

    Basic information that confirms credentials.

  6. Tuvale dönmek için Test sayfasını kapatın.

Sanal makineyi başlatmak için kod ekleme

Artık runbook'unuz Azure aboneliğinde kimlik doğrulaması yaptığınıza göre kaynakları yönetebilirsiniz. Sanal makineyi başlatmak için bir komut ekleyin. Azure aboneliğinizdeki herhangi bir VM'yi seçebilirsiniz ve şimdilik bu adı runbook'ta sabit kodlamanız gerekir.

  1. Aşağıdaki kodu kapanış ayracından hemen önce son satır olarak ekleyin. değerini vm'nin gerçek adıyla değiştirin VMName .

    Start-AzVM -Name "VMName" -ResourceGroupName $resourceGroup -DefaultProfile $AzureContext
    
  2. Runbook'u test edin ve VM'nin başlatıldığını onaylayın. Ardından tuvale dönün.

Runbook'a giriş parametreleri ekleme

Runbook'unuz şu anda runbook'ta sabit kodladığınız VM'yi başlatır. Runbook başlatıldığında VM'yi belirtebiliyorsanız daha yararlı olacaktır. Bu işlevselliği sağlamak için runbook'a giriş parametreleri ekleyin.

  1. 3 $resourceGroup = "resourceGroupName". satırı aşağıdakilerle değiştirin:

    Param(
        [string]$resourceGroup,
        [string]$VMName
    )
    
  2. Önceki Start-AzVM komutu aşağıdakilerle değiştirin:

    Start-AzVM -Name $VMName -ResourceGroupName $resourceGroup -DefaultProfile $AzureContext
    
  3. Runbook'u test edin ve VM'nin başlatıldığını onaylayın. Ardından tuvale dönün.

Birden çok VM'i aynı anda yönetme

Bir koleksiyondaki her öğe için komutları eşzamanlı olarak işlemek için ForEach -Parallel yapısını kullanabilirsiniz. Kodu düzelterek runbook'un şu şekilde çalışmasını sağlayın:

  • Sanal makine adları koleksiyonunu kabul edin,
  • Sanal makineleri durdurmak veya başlatmak için bir parametre kabul edin ve
  • Eylemleri tüm sanal makinelerde paralel olarak gerçekleştirme
  1. Mevcut kodun tümünü aşağıdakilerle değiştirin:

    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. Runbook'un sistem tarafından atanan yönetilen kimlikle yürütülmesini istiyorsanız, kodu olduğu gibi bırakın. Kullanıcı tarafından atanan bir yönetilen kimlik kullanmayı tercih ediyorsanız:

    1. 9. satırdan öğesini kaldırın Connect-AzAccount -Identity.
    2. değerini ve ile Connect-AzAccount -Identity -AccountId <ClientId>değiştirin
    3. Daha önce edindiğiniz İstemci Kimliğini girin.
  3. Kaydet'i, yayımla'yı ve sorulduğunda Evet'i seçin.

  4. Genel Bakış sayfasında Başlat'ı seçin.

  5. Parametreleri doldurun ve Tamam'ı seçin.

    Parametre Açıklama
    RESOURCEGROUP VM'lerin kaynak grubunun adını girin.
    VM’ler Aşağıdaki söz dizimini kullanarak sanal makinelerin adlarını girin: ["VM1","VM2","VM3"]
    Eylem veya startgirinstop.
  6. Sanal makine listenize gidin ve sayfayı birkaç saniyede bir yenileyin. Her vm için eylemin paralel olarak gerçekleştiğini gözlemleyin. -Parallel Anahtar sözcük olmadan eylemler sırayla gerçekleştirilirdi. VM'ler sıralı olarak başlayacak olsa da her VM, her vm'nin özelliklerine göre biraz farklı zamanlarda Çalışıyor aşamasına ulaşabilir.

Kaynakları temizleme

Bu runbook'u kullanmaya devam etmeyecekseniz aşağıdaki adımlarla silin:

  1. Otomasyon Hesabınıza gidin.
  2. İşlem Otomasyonu altında Runbook'lar'ı seçin.
  3. Runbook'u seçin.
  4. Runbook'a Genel Bakış sayfasında Sil'i seçin.

Sonraki adımlar

Bu öğreticide bir PowerShell iş akışı runbook'u oluşturdunuz. Python 3 runbook'larına göz atın: