Öğretici: Otomasyon 'da PowerShell Iş akışı runbook 'u oluşturma

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

Not

Bu makale PowerShell 5,1 için geçerlidir; PowerShell 7,1 (Önizleme) iş akışlarını desteklemez.

Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:

  • PowerShell İş Akışı runbook’u oluşturma
  • Runbook 'u test etme ve yayımlama
  • 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

Bir 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 verilmiştir. Aşağıdaki adımlar Azure portal kullanır. PowerShell kullanmayı tercih ediyorsanız, bkz. Azure PowerShell kullanarak Azure rolleri atama.

  1. Azure Portal oturum açın ve otomasyon hesabınıza gidin.

  2. hesap Ayarlar altında kimlik (önizleme) öğesini seçin.

  3. İzinler altında, sistem atandı sekmesinden Azure rolü atamaları ' nı seçerek Azure rol atamaları sayfasını açın.

    Portalda Azure rol atamaları seçiliyor.

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

    Portalda rol atamaları ekleyin.

  5. Uygun değerleri seçin.

    Özellik Açıklama
    Kapsam Kapsam, rol atamasının uygulandığı bir kaynak kümesidir. Aşağı açılan listeden kaynak grubu' nu seçin.
    Abonelik Bu alan, aboneliğiniz ile otomatik olarak doldurulmalıdır.
    Kaynak Grubu Aşağı açılan listeden, kimlik izinlerini sağlamak için kaynak grubunu seçin.
    Rol Aşağı açılan listeden DevTest Labs kullanıcısı' nı seçin.
  6. Kaydet' i seçin ve ardından Azure rol atamaları sayfasını kapatarak sistem atandı sekmesine dönün.

  7. Kullanıcı atandı 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.

    Portalda Kullanıcı tarafından atanan yönetilen kimlik seçiliyor.

  9. Daha sonra kullanmak üzere ISTEMCI kimliğini bir yere göz atın.

    Portalda yönetilen kimliğin Istemci KIMLIĞI gösteriliyor

  10. Sol menüden Azure rol atamaları ' nı ve ardından rol ataması Ekle (Önizleme) ' yi seçerek rol ataması Ekle (Önizleme) sayfasını açın.

    Kullanıcı tarafından atanan kimlik için portalda rol atamaları ekleyin.

  11. Uygun değerleri seçin.

    Özellik Açıklama
    Kapsam Aşağı açılan listeden kaynak grubu' nu seçin.
    Abonelik Bu alan, aboneliğiniz ile otomatik olarak doldurulmalıdır.
    Kaynak Grubu Aşağı açılan listeden, kimlik izinlerini sağlamak için kaynak grubunu seçin.
    Rol Aşağı açılan listeden DevTest Labs kullanıcısı' nı seçin.
  12. Kaydet' i seçin ve ardından Kullanıcı atandı sekmesine dönmek için Azure rol atamaları sayfasını kapatın.

Yeni runbook oluştur

Basit bir PowerShell Iş akışı runbook 'uoluş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.

Not

Yayın runbook 'u oluşturulduktan sonra Azure portal yeni bir deneyimi vardır. Runbook oluşturma> runbook 'lar dikey penceresini seçtiğinizde, geçerli seçeneklerle runbook oluşturma adlı yeni bir sayfa açılır.

  1. Açık Otomasyon hesabı sayfasından, Işlem Otomasyonu altında runbook 'lar ' ı seçin.

    Portaldan PowerShell iş akışı runbook 'u oluşturma

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

    1. Runbook 'u adlandırın. Örneğin, test.
    2. Runbook türü açılan menüsünde PowerShell' i seçin.
    3. Çalışma zamanı sürümü açılan listesinden 5,1' yi seçin.
    4. Geçerli açıklamayı girin.
    5. Oluştur’u seçin.

    Portaldan PowerShell iş akışı runbook seçenekleri

Runbook 'a kod ekleme

Kodu doğrudan runbook 'a yazabilir ya da kitaplık denetiminden cmdlet 'leri, runbook 'ları ve varlıkları seçebilir ve ilgili parametrelerle runbook 'lara ekleyebilirsiniz. Bu öğreticide doğrudan runbook 'a kod yazın.

Runbook 'larınız Şu anda yalnızca gerekli Workflow anahtar sözcüğü, runbook 'un adı ve tüm iş akışını gösteren küme ayraçları ile boştur.

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 etmeniz gerekir. 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. Sınama 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ölmesinde görüntülenir.

    İşin durumu kuyruğa alındı olarak başlar ve işin buluttaki bir runbook worker 'ın kullanılabilir hale gelmesini beklediğini belirtir. Bir çalışan işi talep ettiği zaman, durum başlayacak şekilde değişir. Son olarak, runbook aslında çalışmaya başladığında durum çalışıyor olur.

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

    PowerShell iş akışı runbook paralel çıktısı

    Çıktıyı gözden geçirin. Komut da Parallel dahil olmak üzere Start-Sleep blokta yer alan her şey aynı anda yürütülür. Bloğun dışındaki Parallel komutlar, farklı tarih saat damgaları ile gösterildiği gibi sırayla ydı.

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

Runbook'ları yayımlama ve başlatma

Oluşturduğunuz runbook hala Taslak modundadır. Üretimde çalıştırmadan ö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'ları yayımlamak için Yayımla'yı seçin ve istendiğinde Evet'i seçin.

  2. Durum alanı artık Yayımlandı olarak gösterir. Runbook'ları hemen başlatmanızı, gelecekteki bir başlangıç saati zamanlamanızı veya runbook'un bir HTTP çağrısıyla başlatılamasını sağlayacak bir web kancası oluşturmanıza olanak sağlayan üst düzey seçenekleri gözden geçirebilirsiniz. Başlat'ı seçin ve ardından runbook'un başlatılamanız istendiğinde Evet'i seçin.

    PowerShell iş akışı runbook'una genel bakış sayfası

  3. Oluşturulan runbook işi için bir İş sayfası açılır. Bu durumda, işin ilerlemesini izlemek için sayfayı açık bırakın. Durum alanı, runbook'un test etme aşamasında gördüğü durumlarla eştir.

    Runbook İş sayfasının ekran görüntüsü.

  4. Runbook durumu Tamamlandı olarak olduktan sonra Çıkış'ı seçin. Çıkış, test çıkışına benzer şekilde görünüyor olabilir.

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

  6. Kaynaklar altında İşler'i seçin. Bu sayfada runbook'uz tarafından oluşturulan tüm işler listeleyebilirsiniz. İş yalnızca bir kez çalıştırılana kadar yalnızca bir işin listelenmiş olduğunu görüyorsanız.

  7. Runbook'ları başlattınız zaman görüntüley istediğiniz İş sayfasını açmak için işi seçin. Runbook için oluşturulan tüm işin ayrıntılarını görüntülemek için bu sayfayı kullanın. Runbook'a 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ıkça bunu yapmak mümkün değil. Runbook, VM'de yönetim eylemlerini 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 kullanmak için kolayca değiştirilebilir.

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

  2. Mevcut kodun hepsini aşağıdakiyle 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
    $AzureContext = (Connect-AzAccount -Identity).context
    
    # set and store context
    $AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext   
    }
    

    $resourceGroupDeğişkenini, kaynak grubunızı temsil eden geçerli bir değerle düzenleyin.

  3. Runbook'un sistem tarafından atanan yönetilen kimlikle yürütmesi için kodu olduğu gibi bırakın. Kullanıcı tarafından atanan yönetilen kimlik kullanmayı tercih ederseniz:

      1. satırdan $AzureContext = (Connect-AzAccount -Identity).context kaldırın,
    1. , ve $AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context ile değiştirin
    2. Daha önce edinilen İstemci Kimliğini girin.
  4. Kaydet'i ve ardından Test bölmesi'ni seçin.

  5. Testi başlatmak için Başlat'ı seçin. Tamamlandıktan sonra, aşağıdakine benzer bir çıktıyı görüyor ve hesabınızla ilgili temel bilgileri görüntüleniyor. Bu eylem, kimlik bilgilerinin geçerli olduğunu onaylar.

    Kimlik bilgilerini onaylayan temel bilgiler.

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

Sanal makineyi başlatmak için kod ekleme

Artık runbook'uz Azure aboneliğine kimlik doğrulayana kadar kaynakları yönetebilirsiniz. Sanal makineyi başlatmak için bir komut ekleyin. Azure aboneliğinize herhangi bir VM'yi seçebilirsiniz ve şimdilik bu adı runbook'ta sabit olarak işlebilirsiniz.

  1. Kapanış ayracı öncesinde son satır olarak aşağıdaki kodu ekleyin. yerine VMName VM'nin gerçek adını yazın.

    Start-AzVM -Name "VMName" -ResourceGroupName $resourceGroup -DefaultProfile $AzureContext
    
  2. Runbook'ları test etmek ve VM'nin başlat olduğunu onaylayın. Ardından tuvale geri dönerek.

Runbook'a giriş parametreleri ekleme

Runbook'uz şu anda runbook'ta sabit kodla kodladnız VM'yi başlatır. Runbook başlatken VM'yi belirtemezseniz daha kullanışlı olacaktır. Bu işlevi sağlamak için runbook'a giriş parametreleri ekleyin.

    1. satırı $resourceGroup = "resourceGroupName" aşağıdakiyle değiştirin:
    Param(
        [string]$resourceGroup,
        [string]$VMName
    )
    
  1. Önceki komutu Start-AzVM aşağıdakiyle değiştirin:

    Start-AzVM -Name $VMName -ResourceGroupName $resourceGroup -DefaultProfile $AzureContext
    
  2. Runbook'ları test etmek ve VM'nin başlat olduğunu onaylayın. Ardından tuvale geri dönerek.

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. Runbook'un şimdi şu şekilde çalışması için kodu düzeltin:

  • Sanal makine adları koleksiyonunu kabul etme,
  • Sanal makineleri durdurmak veya başlatmak için bir parametre kabul etme ve
  • Eylemleri tüm sanal makinelere paralel olarak gerçekleştirme
  1. Mevcut kodun hepsini aşağıdakiyle 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
    $AzureContext = (Connect-AzAccount -Identity).context
    
    # set and store context
    $AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext   
    
    # 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ütmesi için kodu olduğu gibi bırakın. Kullanıcı tarafından atanan yönetilen kimlik kullanmayı tercih ederseniz:

      1. satırdan $AzureContext = (Connect-AzAccount -Identity).context kaldırın,
    1. , ve $AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context ile değiştirin
    2. Daha önce edinilen İstemci Kimliğini girin.
  3. Kaydet'i, ardından Yayımla'yı ve istendiğinde Evet'i seçin.

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

  5. Parametreleri doldurmak için Tamam'ı seçin.

    Parametre Açıklama
    RESOURCEGROUP VM'lerin kaynak grubunun adını girin.
    VM'ler Aşağıdaki sözdizimini kullanarak sanal makinelerin adlarını girin: ["VM1","VM2","VM3"]
    Eylem veya stop start girin.
  6. Sanal makine listenize gidin ve sayfayı birkaç saniyede bir yenileyin. Her vm için eylemin paralel olarak olduğunu gözlemlemek. anahtar -Parallel sözcüğü olmadan eylemler sırayla gerçekleştirilir. VM'ler sırayla başlasa da, her VM her VM'nin özelliklerine göre biraz farklı zamanlarda Çalışıyor aşamasına ulaşabilir.

Kaynakları temizleme

Bu runbook'ları kullanmaya devam edecek değilsanız, aşağıdaki adımları kullanarak silin:

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

Sonraki adımlar

Bu öğreticide bir PowerShell iş akışı runbook'ları oluşturduk. Python 3 runbook'larını görmek için bkz: