Öğ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
- 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üller:
Az.AccountsveAz.ComputeOtomasyon hesabına içeri aktarılır. Daha fazla bilgi için bkz. Import az modules. - İki veya daha fazla Azure sanal makinesi. Bu makineleri durdurup başlatdıklarından, üretim VM 'Leri olmamalıdır.
- Makinenizde yüklü Azure az PowerShell modülü . Yüklemek veya yükseltmek için bkz. Azure az PowerShell modülünü yüklemek.
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.
Azure Portal oturum açın ve otomasyon hesabınıza gidin.
hesap Ayarlar altında kimlik (önizleme) öğesini seçin.
İzinler altında, sistem atandı sekmesinden 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 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. Kaydet' i seçin ve ardından Azure rol atamaları sayfasını kapatarak sistem atandı sekmesine dönün.
Kullanıcı atandı 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 ISTEMCI kimliğini bir yere göz atın.
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.
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. 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.
Açık Otomasyon hesabı sayfasından, Işlem Otomasyonu altında runbook 'lar ' ı seçin.
+ Runbook oluştur' u seçin.
- Runbook 'u adlandırın. Örneğin, test.
- Runbook türü açılan menüsünde PowerShell' i seçin.
- Çalışma zamanı sürümü açılan listesinden 5,1' yi seçin.
- Geçerli açıklamayı girin.
- Oluştur’u seçin.
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
{
}
Eşzamanlı olarak çalışacak birden çok komut içeren bir betik bloğu oluşturmak için
Parallelanahtar 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-DateKaydet' 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.
Sınama 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ö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.
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:
Çıktıyı gözden geçirin. Komut da
Paralleldahil olmak üzereStart-Sleepblokta yer alan her şey aynı anda yürütülür. Bloğun dışındakiParallelkomutlar, farklı tarih saat damgaları ile gösterildiği gibi sırayla ydı.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.
Runbook'ları yayımlamak için Yayımla'yı seçin ve istendiğinde Evet'i seçin.
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.
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 durumu Tamamlandı olarak olduktan sonra Çıkış'ı seçin. Çıkış, test çıkışına benzer şekilde görünüyor olabilir.
Runbook'a Genel Bakış sayfasına dönmek için İş sayfasını kapatın.
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.
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.
Genel Bakış'ı ve ardından Düzenle'yi seçerek metin düzenleyiciyi açın.
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.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:
-
- satırdan
$AzureContext = (Connect-AzAccount -Identity).contextkaldırın,
- satırdan
- , ve
$AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).contextile değiştirin - Daha önce edinilen İstemci Kimliğini girin.
-
Kaydet'i ve ardından Test bölmesi'ni seçin.
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.
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.
Kapanış ayracı öncesinde son satır olarak aşağıdaki kodu ekleyin. yerine
VMNameVM'nin gerçek adını yazın.Start-AzVM -Name "VMName" -ResourceGroupName $resourceGroup -DefaultProfile $AzureContextRunbook'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.
-
- satırı
$resourceGroup = "resourceGroupName"aşağıdakiyle değiştirin:
Param( [string]$resourceGroup, [string]$VMName ) - satırı
Önceki komutu
Start-AzVMaşağıdakiyle değiştirin:Start-AzVM -Name $VMName -ResourceGroupName $resourceGroup -DefaultProfile $AzureContextRunbook'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
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'." } }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:
-
- satırdan
$AzureContext = (Connect-AzAccount -Identity).contextkaldırın,
- satırdan
- , ve
$AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).contextile değiştirin - Daha önce edinilen İstemci Kimliğini girin.
-
Kaydet'i, ardından Yayımla'yı ve istendiğinde Evet'i seçin.
Genel Bakış sayfasında Başlat'ı seçin.
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 stopstartgirin.Sanal makine listenize gidin ve sayfayı birkaç saniyede bir yenileyin. Her vm için eylemin paralel olarak olduğunu gözlemlemek. anahtar
-Parallelsö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:
- Otomasyon Hesabınıza gidin.
- İşlem Otomasyonu altında Runbook'lar'ı seçin.
- Runbook'u seçin.
- 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: