Öğ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
- En az bir kullanıcı tarafından atanan yönetilen kimliğe sahip bir Azure Otomasyonu hesabı. Daha fazla bilgi için bkz . Yönetilen kimliği etkinleştirme.
- Az modülleri:
Az.Accounts
veAz.Compute
Otomasyon hesabına aktarıldı. Daha fazla bilgi için bkz. Az modüllerini içe aktarma. - İki veya daha fazla Azure sanal makinesi. Bu makineleri durdurup başlattığınızdan, bunlar üretim VM'leri olmamalıdır.
- Makinenizde yüklü Olan Azure Az PowerShell modülü. Yüklemek veya yükseltmek için bkz . Azure Az PowerShell modülünü yükleme.
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.
Azure portalında oturum açın ve Otomasyon hesabınıza gidin.
Hesap Ayarları'nın altında Kimlik (Önizleme) öğesini seçin.
Sistem tarafından atanan sekmesindeki İzinler'in altında Azure rol atamaları'nı seçerek Azure rol atamaları sayfasını açın.
Rol ataması ekle (Önizleme) sayfasını açmak için + Rol ataması ekle (Önizleme) seçeneğini belirleyin.
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. Kaydet'i seçin ve ardından Sistem tarafından atanan sekmesine dönmek için Azure rol atamaları sayfasını kapatın.
Kullanıcı tarafından atanan sekmesini seçin.
Yönetilen Kimlik sayfasını açmak için listeden kullanıcı tarafından atanan yönetilen kimliğinizi seçin.
Daha sonra kullanmak üzere İstemci Kimliğini not alın.
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.
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. 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.
Açık Otomasyon hesabı sayfanızdaki İşlem Otomasyonu altında Runbook'lar'ı seçin
+ Runbook oluştur'u seçin.
- Runbook'u adlandırın. Örneğin, test edin.
- Runbook türü açılan menüsünden PowerShell İş Akışı'nı seçin.
- Çalışma zamanı sürümü açılan listesinden 5.1'i seçin.
- İlgili Açıklamayı girin.
- Oluştur'u belirleyin.
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
{
}
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
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.
Test sayfasını açmak için Test bölmesi'ni seçin.
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.
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:
Çı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ğunParallel
dışındaki komutlar, farklı tarih saat damgaları tarafından gösterildiği gibi sıralı olarak çalıştırılan komutlar.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.
Runbook'u yayımlamak için Yayımla'yı ve sorulduğunda Evet'i seçin.
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.
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 durumu Tamamlandı olarak gösterildikten sonra Çıkış'ı seçin. Çıkış, test çıkışına benzer görünmelidir.
Runbook Genel Bakış sayfasına dönmek için İş sayfasını kapatın.
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.
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.
Genel Bakış'ı ve ardından Düzenle'yi seçerek metin düzenleyicisini açın.
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.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:
- 9. satırdan öğesini kaldırın
Connect-AzAccount -Identity
. - değerini ve ile
Connect-AzAccount -Identity -AccountId <ClientId>
değiştirin - Daha önce edindiğiniz İstemci Kimliğini girin.
- 9. satırdan öğesini kaldırın
Kaydet'i ve ardından Test bölmesini seçin.
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.
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.
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
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.
3
$resourceGroup = "resourceGroupName"
. satırı aşağıdakilerle değiştirin:Param( [string]$resourceGroup, [string]$VMName )
Önceki
Start-AzVM
komutu aşağıdakilerle değiştirin:Start-AzVM -Name $VMName -ResourceGroupName $resourceGroup -DefaultProfile $AzureContext
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
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'." } }
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:
- 9. satırdan öğesini kaldırın
Connect-AzAccount -Identity
. - değerini ve ile
Connect-AzAccount -Identity -AccountId <ClientId>
değiştirin - Daha önce edindiğiniz İstemci Kimliğini girin.
- 9. satırdan öğesini kaldırın
Kaydet'i, yayımla'yı ve sorulduğunda Evet'i seçin.
Genel Bakış sayfasında Başlat'ı seçin.
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 start
girinstop
.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:
- Otomasyon Hesabınıza gidin.
- İşlem Otomasyonu altında Runbook'lar'ı seçin.
- Runbook'u seçin.
- 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: