Aracılığıyla paylaş


Öğ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.

Not

Bu makale yalnızca PowerShell 5.1 için geçerlidir. PowerShell 7+ sürümleri İş Akışlarını desteklemez ve güncel olmayan runbook'lar güncelleştirilemez. Paralel iş yürütme gibi gelişmiş özellikler için PowerShell 7.2 metin runbook'larını kullanmanızı öneririz. PowerShell İş Akışı runbook'larının sınırlamaları hakkında daha fazla bilgi edinin.

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 izinler 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ı'nın 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.

    Portalda Azure rol atamalarını seçme.

  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 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.
    Role 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.

    Portalda kullanıcı tarafından atanan yönetilen kimliği seçme.

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

    Portalda yönetilen kimlik için İstemci Kimliği gösteriliyor

  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.

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

  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.
    Role 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.

Not

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

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

  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 belirleyin.

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

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 -Seconds 3
     	Get-Date
     }
    
     Write-Output " `r`n"
     Write-Output "Non-Parallel"
     Get-Date
     Start-Sleep -Seconds 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 iş akışı runbook paralel çıkışı

    Çıktıyı gözden geçirin. Komut da dahil olmak üzere bloktaki Parallel Start-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 iş akışı runbook'a genel bakış sayfası

  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.

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

  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.

    Kimlik bilgilerini onaylayan temel bilgiler.

  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 paralel 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: