Azure Otomasyonu 'nda runbook 'ları yönetme
Yeni bir tane oluşturarak veya var olan bir dosyayı ya da runbook galerisindenbir runbook 'u içeri aktararak, Azure Otomasyonu 'na bir runbook ekleyebilirsiniz. Bu makalede, runbook tasarımıyla ilgili bir runbook 'u ve önerilen desenleri ve en iyi uygulamaları yönetmeye yönelik bilgiler sağlanmaktadır. Azure Otomasyonu Için runbook ve modül galerilerindetopluluk runbook 'larına ve modüllerine erişmenin tüm ayrıntılarını bulabilirsiniz.
Runbook oluşturma
Azure portal veya PowerShell kullanarak Azure Otomasyonu 'nda yeni bir runbook oluşturun. Runbook oluşturulduktan sonra, içindeki bilgileri kullanarak düzenleyebilirsiniz.
- Azure Otomasyonu 'nda metin runbook 'unu düzenleme
- Otomasyon Runbook 'ları için anahtar PowerShell Iş akışı kavramlarını öğrenin
- Azure Otomasyonu 'nda Python 2 paketlerini yönetme
- Azure Otomasyonu 'nda Python 3 paketlerini yönetme (Önizleme)
Azure portal runbook oluşturma
- Azure portalındaoturum açın.
- Otomasyon hesaplarını arayın ve seçin.
- Otomasyon hesapları sayfasında, listeden Otomasyon hesabınızı seçin.
- Otomasyon hesabından, runbook 'ların listesini açmak için Işlem Otomasyonu ' nun altındaki runbook 'lar ' ı seçin.
- Runbook oluştur ' a tıklayın.
- Runbook 'u adlandırın.
- Runbook türü açılır listesinden. Türünüseçin. Runbook adı bir harfle başlamalıdır ve harfler, rakamlar, alt çizgiler ve kısa çizgiler içerebilir
- Çalışma zamanı sürümünü seçin
- Geçerli açıklamayı girin
- Runbook oluşturmak için Oluştur’a tıklayın.
PowerShell ile runbook oluşturma
Boş bir runbook oluşturmak için New-AzAutomationRunbook cmdlet 'ini kullanın. Typeİçin tanımlanan runbook türlerinden birini belirtmek için parametresini kullanın New-AzAutomationRunbook .
Aşağıdaki örnek, yeni bir boş runbook oluşturmayı gösterir.
$params = @{
AutomationAccountName = 'MyAutomationAccount'
Name = 'NewRunbook'
ResourceGroupName = 'MyResourceGroup'
Type = 'PowerShell'
}
New-AzAutomationRunbook @params
Runbook 'u içeri aktarma
Kendi runbook 'unuzu oluşturmak için bir PowerShell veya PowerShell Iş akışı (.ps1) betiğini, bir grafik runbook 'unu (. graphrunbook) veya Python 2 veya Python 3 betiğini (**.**çıgrafı) içeri aktarabilirsiniz. İçeri aktarma sırasında oluşturulan runbook 'un türünü belirtin ve aşağıdaki noktalara dikkat edin.
Bir PowerShell runbook 'Una veya PowerShell iş akışı runbook'unda iş akışı içermeyen bir .ps1 dosyasını içeri aktarabilirsiniz. Bir PowerShell Iş akışı runbook 'una içeri aktarırsanız, bir iş akışına dönüştürülür. Bu durumda, yapılan değişiklikleri anlatmak için Runbook 'a açıklamalar dahildir.
PowerShell iş akışı runbook 'unayalnızca PowerShell iş akışı içeren bir .ps1 dosyasını içeri aktarabilirsiniz. Dosya birden çok PowerShell iş akışı içeriyorsa içeri aktarma başarısız olur. Her bir iş akışını kendi dosyasına kaydetmeniz ve ayrı ayrı içeri aktarmanız gerekir.
PowerShell betik altyapısı bunu tanıyamadığı için PowerShell Iş akışını içeren bir .ps1 dosyasını PowerShell runbook 'unaiçeri aktarmayın.
Yalnızca bir . graphrunbook dosyasını yeni bir grafik runbook 'unaaktarın.
Azure portal runbook 'u içeri aktarma
Bir betik dosyasını Azure Otomasyonu 'na aktarmak için aşağıdaki yordamı kullanabilirsiniz.
Not
Portalı kullanarak yalnızca bir .ps1 dosyasını PowerShell iş akışı runbook 'una aktarabilirsiniz.
- Azure portal Otomasyon hesaplarını arayıp seçin.
- Otomasyon hesapları sayfasında, listeden Otomasyon hesabınızı seçin.
- Otomasyon hesabından, runbook 'ların listesini açmak için Işlem Otomasyonu ' nun altındaki runbook 'lar ' ı seçin.
- Runbook 'U Içeri Aktar ' a tıklayın. Aşağıdaki seçeneklerden birini seçebilirsiniz:
- Dosya Için tarama -yerel makinenizden bir dosya seçer.
- Galeriye gözatın -Galeri 'den mevcut bir runbook 'a gözatabilir ve buradan seçim yapabilirsiniz.
- Dosyayı seçin.
- Ad alanı etkinleştirilirse, runbook adını değiştirme seçeneğiniz vardır. Ad bir harfle başlamalıdır ve harfler, rakamlar, alt çizgiler ve kısa çizgiler içerebilir.
- Runbook türü otomatik olarak doldurulur, ancak ilgili kısıtlamaları hesaba ayırarak türü değiştirebilirsiniz.
- Çalışma zamanı sürümü otomatik olarak doldurulur veya açılan listeden sürümü seçer.
- İçeri Aktar’a tıklayın. Yeni runbook, Otomasyon hesabı için Runbook 'lar listesinde görüntülenir.
- Runbook 'u çalıştırmadan önce yayımlamanız gerekir.
Not
Grafik runbook 'unu içeri aktardıktan sonra, başka bir türe dönüştürebilirsiniz. Ancak, grafik bir runbook 'u metin temelli bir runbook 'a dönüştüremezsiniz.
PowerShell ile runbook 'u içeri aktarma
Bir betik dosyasını taslak runbook olarak içeri aktarmak için Import-AzAutomationRunbook cmdlet 'ini kullanın. Runbook zaten mevcutsa, parametresini cmdlet ile kullanmadığınız müddetçe içeri aktarma başarısız olur Force .
Aşağıdaki örnek bir runbook 'a bir betik dosyasının nasıl içeri aktarılacağını gösterir.
$params = @{
AutomationAccountName = 'MyAutomationAccount'
Name = 'Sample_TestRunbook'
ResourceGroupName = 'MyResourceGroup'
Type = 'PowerShell'
Path = 'C:\Runbooks\Sample_TestRunbook.ps1'
}
Import-AzAutomationRunbook @params
Kaynakları işle
Runbook 'ağınız bir kaynakoluşturursa, betiği oluşturmayı denemeden önce kaynağın zaten mevcut olup olmadığını kontrol etmelidir. Temel bir örnek aşağıda verilmiştir.
$vmName = 'WindowsVM1'
$rgName = 'MyResourceGroup'
$myCred = Get-AutomationPSCredential 'MyCredential'
$vmExists = Get-AzResource -Name $vmName -ResourceGroupName $rgName
if (-not $vmExists) {
Write-Output "VM $vmName does not exist, creating"
New-AzVM -Name $vmName -ResourceGroupName $rgName -Credential $myCred
} else {
Write-Output "VM $vmName already exists, skipping"
}
Etkinlik günlüğünden ayrıntıları alma
Otomasyon hesabı için etkinlik günlüğünden runbook 'u başlatan kişi veya hesap gibi runbook ayrıntılarını alabilirsiniz. Aşağıdaki PowerShell örneği, son kullanıcının belirtilen runbook 'u çalıştırmasını sağlar.
$rgName = 'MyResourceGroup'
$accountName = 'MyAutomationAccount'
$runbookName = 'MyRunbook'
$startTime = (Get-Date).AddDays(-1)
$params = @{
ResourceGroupName = $rgName
StartTime = $startTime
}
$JobActivityLogs = (Get-AzLog @params).Where( { $_.Authorization.Action -eq 'Microsoft.Automation/automationAccounts/jobs/write' })
$JobInfo = @{}
foreach ($log in $JobActivityLogs) {
# Get job resource
$JobResource = Get-AzResource -ResourceId $log.ResourceId
if ($null -eq $JobInfo[$log.SubmissionTimestamp] -and $JobResource.Properties.Runbook.Name -eq $runbookName) {
# Get runbook
$jobParams = @{
ResourceGroupName = $rgName
AutomationAccountName = $accountName
Id = $JobResource.Properties.JobId
}
$Runbook = Get-AzAutomationJob @jobParams | Where-Object RunbookName -EQ $runbookName
# Add job information to hashtable
$JobInfo.Add($log.SubmissionTimestamp, @($Runbook.RunbookName, $Log.Caller, $JobResource.Properties.jobId))
}
}
$JobInfo.GetEnumerator() | Sort-Object Key -Descending | Select-Object -First 1
İlerleme izleme
Runbook 'larınızın daha kolay bir şekilde yeniden kullanılabilmesi ve yeniden başlatılması için, runbook 'larınızı doğası gereği modüler olarak yazmak iyi bir uygulamadır. Bir runbook 'ta ilerlemeyi izlemek, sorunlar varsa runbook mantığının doğru şekilde yürütüldüğünü sağlar.
Bir runbook 'un ilerlemesini depolama hesabı, veritabanı veya paylaşılan dosyalar gibi bir dış kaynak kullanarak izleyebilirsiniz. İlk olarak gerçekleştirilen son eylemin durumunu denetlemek için Runbook 'ınızdaki mantığı oluşturun. Daha sonra, denetim sonuçlarına göre, mantıksal runbook 'taki belirli görevleri atlayabilir veya devam edebilir.
Eş zamanlı işleri engelle
Bazı runbook 'lar aynı anda birden çok iş üzerinde çalışıyorsa Strangely davranır. Bu durumda, bir runbook 'un zaten çalışmakta olan bir işin olup olmadığını belirlemede Logic uygulaması için önem taşır. Temel bir örnek aşağıda verilmiştir.
# 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
# Check for already running or new runbooks
$runbookName = "runbookName"
$resourceGroupName = "resourceGroupName"
$automationAccountName = "automationAccountName"
$jobs = Get-AzAutomationJob -ResourceGroupName $resourceGroupName `
-AutomationAccountName $automationAccountName `
-RunbookName $runbookName `
-DefaultProfile $AzureContext
# Check to see if it is already running
$runningCount = ($jobs.Where( { $_.Status -eq 'Running' })).count
if (($jobs.Status -contains 'Running' -and $runningCount -gt 1 ) -or ($jobs.Status -eq 'New')) {
# Exit code
Write-Output "Runbook $runbookName is already running"
exit 1
} else {
# Insert Your code here
Write-Output "Runbook $runbookName is not running"
}
Runbook 'un sistem tarafından atanan yönetilen kimlikle yürütmesini istiyorsanız, kodu olduğu gibi bırakın. Kullanıcı tarafından atanan yönetilen kimlik kullanmayı tercih ediyorsanız:
-
- satırdan,
$AzureContext = (Connect-AzAccount -Identity).contextöğesini kaldırın
- satırdan,
- İle değiştirin
$AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).contextve - Istemci KIMLIĞINI girin.
Zamana bağlı bir betikte geçici hataları işleme
Runbook 'larınızın, yeniden başlatılmasına veya başarısız olmasına neden olabilecek geçici hatalar da dahil olmak üzere sağlam ve hatalarıişleyebilme yeteneğine sahip olması gerekir. Bir runbook başarısız olursa, Azure Otomasyonu bunu yeniden dener.
Runbook 'larınız normalde bir zaman kısıtlaması içinde çalışıyorsa, yürütme süresini denetlemek için komut dosyasının Logic uygular. Bu denetim, yalnızca belirli zamanlarda başlatma, kapatma veya genişleme gibi işlemlerin çalıştırılmasını sağlar.
Not
Azure korumalı alan işlemindeki yerel saat UTC olarak ayarlanır. Runbook 'larınızda tarih ve saat hesaplamaları bu olguyu göz önünde bulundurmanız gerekir.
Birden fazla abonelik ile çalışma
Runbook 'larınızın aboneliklerleçalışabilebilmesi gerekir. Örneğin, birden çok aboneliği işlemek için Runbook devre dışı bırak-AzContextAutosave cmdlet 'ini kullanır. Bu cmdlet, kimlik doğrulama bağlamının aynı korumalı alanda çalışan başka bir runbook 'tan alınmamasını sağlar.
# 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
$childRunbookName = 'childRunbookDemo'
$resourceGroupName = "resourceGroupName"
$automationAccountName = "automationAccountName"
$startParams = @{
ResourceGroupName = $resourceGroupName
AutomationAccountName = $automationAccountName
Name = $childRunbookName
DefaultProfile = $AzureContext
}
Start-AzAutomationRunbook @startParams
Runbook 'un sistem tarafından atanan yönetilen kimlikle yürütmesini istiyorsanız, kodu olduğu gibi bırakın. Kullanıcı tarafından atanan yönetilen kimlik kullanmayı tercih ediyorsanız:
-
- satırdan,
$AzureContext = (Connect-AzAccount -Identity).contextöğesini kaldırın
- satırdan,
- İle değiştirin
$AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).contextve - Istemci KIMLIĞINI girin.
Özel bir komut dosyasıyla çalışma
Not
Normalde Log Analytics Aracısı yüklü olan konakta özel komut dosyaları ve Runbook 'lar çalıştıramazsınız.
Özel bir komut dosyası kullanmak için:
- Bir Otomasyon hesabı oluşturun.
- Karma Runbook Worker rolünü dağıtın.
- Bir Linux makinesinde, yükseltilmiş ayrıcalıklara sahip olmanız gerekir. İmza denetimlerinikapatmak için oturum açın.
Bir runbook'u test etme
Bir runbook 'u test ettiğinizde taslak sürümü yürütülür ve gerçekleştirdiği tüm işlemler tamamlanır. İş geçmişi oluşturulmaz, ancak Çıkış ve uyarı ve hata akışları Test çıkış bölmesinde görüntülenir. Ayrıntılı akışa Iletiler yalnızca VerbosePreference değişkeni olarak ayarlandıysa çıkış bölmesinde görüntülenir Continue .
Taslak sürümü çalıştırılsa da runbook hala normal şekilde yürütülür ve ortamdaki kaynaklara karşı herhangi bir eylem gerçekleştirir. Bu nedenle, yalnızca üretim dışı kaynaklarda runbook 'ları test etmelisiniz.
Her runbook türünü test etme yordamı aynıdır. Azure portal metin Düzenleyicisi ile grafik Düzenleyicisi arasındaki sınamada fark yoktur.
- Runbook 'un taslak sürümünü metin düzenleyicisinde veya grafik düzenleyicideaçın.
- Test sayfasını açmak için Test ' e tıklayın.
- Runbook 'ta parametreler varsa, bunlar sol bölmede listelenir ve burada test için kullanılacak değerleri sağlayabilirsiniz.
- bir karma Runbook çalışanındatesti çalıştırmak istiyorsanız, run Ayarlar öğesini karma çalışan olarak değiştirin ve hedef grubun adını seçin. Aksi takdirde, testi bulutta çalıştırmak için varsayılan Azure 'u saklayın.
- Testi başlatmak için Başlat ' a tıklayın.
- Test edilirken bir PowerShell Iş akışını veya grafik runbook 'u durdurmak veya askıya almak için Çıkış bölmesi altındaki düğmeleri kullanabilirsiniz. Bir runbook'u askıya aldığınızda, askıya alınmadan önce geçerli etkinliği tamamlar. Runbook askıya alındığında, durdurabilir veya yeniden başlatabilirsiniz.
- Çıkış bölmesinde runbook 'tan çıktıyı inceleyin.
Runbook yayımlama
Yeni bir runbook oluşturduğunuzda veya içeri aktardığınızda, çalıştırmadan önce onu yayımlamanız gerekir. Azure Otomasyonu 'ndaki her runbook 'un bir taslak sürümü ve yayımlanmış bir sürümü vardır. Yalnızca Yayımlanan sürüm çalıştırılabilir ve yalnızca Taslak sürüm düzenlenebilir. Yayımlanan sürüm Taslak sürümdeki herhangi bir değişiklikten etkilenmez. Taslak sürümü kullanılabilir hale getirilmeli hale geldiğinde, geçerli yayımlanmış sürümün üzerine bir taslak sürümü yazarak onu yayımlayın.
Azure portal runbook yayımlama
- Azure portal Otomasyon hesaplarını arayıp seçin.
- Otomasyon hesapları sayfasında, listeden Otomasyon hesabınızı seçin.
- Runbook 'u Otomasyon hesabınızda açın.
- Düzenle’ye tıklayın.
- Yayımla ' ya tıklayın ve doğrulama iletisine yanıt olarak Evet ' i seçin.
PowerShell kullanarak runbook yayımlama
Runbook 'unuzu yayımlamak için Publish-AzAutomationRunbook cmdlet 'ini kullanın.
$accountName = "MyAutomationAccount"
$runbookName = "Sample_TestRunbook"
$rgName = "MyResourceGroup"
$publishParams = @{
AutomationAccountName = $accountName
ResourceGroupName = $rgName
Name = $runbookName
}
Publish-AzAutomationRunbook @publishParams
Azure portalda runbook zamanlama
Runbook 'u yayımlandığında, işlem için zamanlayabilirsiniz:
- Azure portal Otomasyon hesaplarını arayıp seçin.
- Otomasyon hesapları sayfasında, listeden Otomasyon hesabınızı seçin.
- Runbook listenizden runbook 'u seçin.
- Kaynaklar altında zamanlamalar ' ı seçin.
- Zamanlama Ekle ' yi seçin.
- Runbook 'U zamanla bölmesinde, runbook 'Una bir zamanlama bağla' yı seçin.
- Zamanlama bölmesinde Yeni bir zamanlama oluştur ' a tıklayın.
- Yeni zamanlama bölmesine bir ad, açıklama ve diğer parametreleri girin.
- Zamanlama oluşturulduktan sonra, vurgulayın ve Tamam' a tıklayın. Artık runbook 'ıza bağlanmalıdır.
- Runbook 'un durumunu bildirmek için posta kutunuzda bir e-posta arayın.
İş durumlarını al
Azure portal durumları görüntüleme
Azure Automation 'da iş işleme ayrıntıları işler' de verilmiştir. Runbook işlerinizi görmeyi hazırsanız Azure portal kullanın ve otomasyon hesabınıza erişin. Sağ tarafta, Iş istatistikleri' nde tüm runbook işlerinin özetini görebilirsiniz.

Özet, yürütülen her iş için iş durumunun bir sayısını ve grafik temsilini görüntüler.
Kutucuğa tıkladığınızda, yürütülen tüm işlerin özetlenen listesini içeren Işler sayfası sunulmaktadır. Bu sayfada her iş için durum, Runbook adı, başlangıç saati ve tamamlanma zamanı gösterilir.
İş listesini filtre işleri' ni seçerek filtreleyebilirsiniz. Belirli bir runbook 'u, iş durumunu veya açılan listeden bir seçimi filtreleyin ve arama için zaman aralığını belirtin.

Alternatif olarak, belirli bir runbook için iş Özeti ayrıntılarını Otomasyon hesabınızdaki runbook 'Lar sayfasından seçip işler' i seçerek görüntüleyebilirsiniz. Bu eylem Işler sayfasını gösterir. Buradan, ayrıntılarını ve çıktısını görüntülemek için bir iş kaydına tıklayabilirsiniz.
PowerShell kullanarak iş durumlarını alma
Bir runbook için oluşturulan işleri ve belirli bir işin ayrıntılarını almak için Get-AzAutomationJob cmdlet 'ini kullanın. Kullanarak bir runbook başlatırsanız Start-AzAutomationRunbook , sonuçta elde edilen işi döndürür. İş çıktısını almak için Get-Azautomationjoi put komutunu kullanın.
Aşağıdaki örnek, örnek bir runbook 'un son işini alır ve durumunu, runbook parametreleri için belirtilen değerleri ve iş çıktısını görüntüler.
$getJobParams = @{
AutomationAccountName = 'MyAutomationAccount'
ResourceGroupName = 'MyResourceGroup'
Runbookname = 'Test-Runbook'
}
$job = (Get-AzAutomationJob @getJobParams | Sort-Object LastModifiedDate -Desc)[0]
$job | Select-Object JobId, Status, JobParameters
$getOutputParams = @{
AutomationAccountName = 'MyAutomationAccount'
ResourceGroupName = 'MyResourceGroup'
Id = $job.JobId
Stream = 'Output'
}
Get-AzAutomationJobOutput @getOutputParams
Aşağıdaki örnek, belirli bir işin çıkışını alır ve her bir kaydı döndürür. Kayıtlardan biri için bir özel durum varsa, komut dosyası değeri yerine özel durumu yazar. Bu davranış, özel durumlar çıkış sırasında normalde günlüğe kaydedilmeyeceğini daha fazla bilgi sağlayamadığı için yararlıdır.
$params = @{
AutomationAccountName = 'MyAutomationAccount'
ResourceGroupName = 'MyResourceGroup'
Stream = 'Any'
}
$output = Get-AzAutomationJobOutput @params
foreach ($item in $output) {
$jobOutParams = @{
AutomationAccountName = 'MyAutomationAccount'
ResourceGroupName = 'MyResourceGroup'
Id = $item.StreamRecordId
}
$fullRecord = Get-AzAutomationJobOutputRecord @jobOutParams
if ($fullRecord.Type -eq 'Error') {
$fullRecord.Value.Exception
} else {
$fullRecord.Value
}
}
Sonraki adımlar
- Runbook yönetiminin ayrıntılarını öğrenmek için bkz. Azure Otomasyonu 'Nda runbook yürütme.
- PowerShell runbook 'unu hazırlamak için bkz. Azure Automation 'da metin runbook 'Larını düzenleme.
- Runbook yürütmeyle ilgili sorunları gidermek için bkz. runbook sorunlarını giderme.