Otomasyon'da runbook giriş parametrelerini yapılandırma
Runbook giriş parametreleri, başlatıldığında verilerin bu verilere geçirilmesine izin vererek runbook'un esnekliğini artırır. Bu parametreler runbook eylemlerinin belirli senaryolar ve ortamlar için hedeflenebilmesini sağlar. Bu makalede runbook'larınızdaki giriş parametrelerinin yapılandırması ve kullanımı açıklanmaktadır.
PowerShell, PowerShell İş Akışı, grafik ve Python runbook'ları için giriş parametrelerini yapılandırabilirsiniz. Runbook'un farklı veri türlerine sahip birden çok parametresi olabilir veya parametresiz olabilir. Giriş parametreleri zorunlu veya isteğe bağlı olabilir ve isteğe bağlı parametreler için varsayılan değerleri kullanabilirsiniz.
Runbook'u başlattığınızda giriş parametrelerine değerler atarsınız. Runbook'u Azure portalından, web hizmetinden veya PowerShell'den başlatabilirsiniz. Bir runbook'u başka bir runbook'ta satır içi olarak adlandırılan bir alt runbook olarak da başlatabilirsiniz.
Giriş türleri
Azure Otomasyonu, farklı runbook türleri arasında çeşitli giriş parametresi değerlerini destekler. Her runbook türü için desteklenen giriş türleri aşağıdaki tabloda listelenmiştir.
Runbook türü | Desteklenen parametre girişleri |
---|---|
PowerShell | -Dizgi - Security.SecureString - INT32 -Boolean - DateTime -Dizi - Collections.Hashtable - Management.Automation.SwitchParameter |
PowerShell İş Akışı | -Dizgi - Security.SecureString - INT32 -Boolean - DateTime -Dizi - Collections.Hashtable - Management.Automation.SwitchParameter |
Grafik PowerShell | -Dizgi - INT32 - INT64 -Boolean -On -da -lık - DateTime -Nesne |
Python | -Dizgi |
PowerShell runbook'larında giriş parametrelerini yapılandırma
Azure Otomasyonu'daki PowerShell ve PowerShell İş Akışı runbook'ları, aşağıdaki özelliklerle tanımlanan giriş parametrelerini destekler.
Özellik | Açıklama |
---|---|
Tür | Gerekli. Parametre değeri için veri türü beklenir. Herhangi bir .NET türü geçerlidir. |
Veri Akışı Adı | Gerekli. Parametrenin adı. Bu ad runbook içinde benzersiz olmalıdır, bir harfle başlamalıdır ve yalnızca harf, sayı veya alt çizgi karakterleri içerebilir. |
Zorunlu | isteğe bağlı. Boole değeri, parametrenin bir değer gerekip gerektirmediğini belirtir. Bunu True olarak ayarlarsanız runbook başlatıldığında bir değer sağlanmalıdır. Bunu False olarak ayarlarsanız, bir değer isteğe bağlıdır. Özelliği için Mandatory bir değer belirtmezseniz, PowerShell giriş parametresini varsayılan olarak isteğe bağlı olarak değerlendirir. |
Default value | isteğe bağlı. Runbook başlatıldığında hiçbir giriş değeri geçirilmediğinde parametre için kullanılan bir değer. Runbook herhangi bir parametre için varsayılan bir değer ayarlayabilir. |
Windows PowerShell, doğrulama, diğer adlar ve parametre kümeleri gibi yukarıda listelenenlerden daha fazla giriş parametresi özniteliğini destekler. Ancak, Azure Otomasyonu şu anda yalnızca listelenen giriş parametresi özelliklerini destekler.
Örnek olarak, PowerShell İş Akışı runbook'unda parametre tanımına bakalım. Bu tanım, birden çok parametrenin virgülle ayrıldığı aşağıdaki genel forma sahiptir.
Param
(
[Parameter (Mandatory= $true/$false)]
[Type] $Name1 = <Default value>,
[Parameter (Mandatory= $true/$false)]
[Type] $Name2 = <Default value>
)
Şimdi bir PowerShell İş Akışı runbook'u için tek bir VM veya bir kaynak grubundaki tüm VM'ler gibi sanal makineler hakkındaki ayrıntıları veren giriş parametrelerini yapılandıralım. Bu runbook, aşağıdaki ekran görüntüsünde gösterildiği gibi iki parametreye sahiptir: sanal makinenin adı (VMName
) ve kaynak grubunun adı (resourceGroupName
).
Bu parametre tanımında, giriş parametreleri dize türünde basit parametrelerdir.
PowerShell ve PowerShell İş Akışı runbook'larının giriş parametreleri için veya PSCredential
gibi Object
tüm basit türleri ve karmaşık türleri desteklediğini unutmayın. Runbook'unuzda bir nesne giriş parametresi varsa, bir değer geçirmek için ad-değer çiftleri içeren bir PowerShell karma tablosu kullanmanız gerekir. Örneğin, runbook'ta aşağıdaki parametreye sahipsiniz.
[Parameter (Mandatory = $true)]
[object] $FullName
Bu durumda parametresine aşağıdaki değeri geçirebilirsiniz.
@{"FirstName"="Joe";"MiddleName"="Bob";"LastName"="Smith"}
PowerShell 7.1 runbook'ları için dizi giriş parametrelerini aşağıdaki biçimde sağlayın:
Ad | Value |
---|---|
TESTPARAMETER | does,this,even,work |
Not
İsteğe bağlı bir String parametresine null varsayılan değeri olan bir değer geçirmediğinizde, parametrenin değeri Null yerine boş bir dize olur.
Grafik runbook'larda giriş parametrelerini yapılandırma
Grafik runbook'un giriş parametrelerinin yapılandırmasını göstermek için, tek bir VM veya bir kaynak grubundaki tüm VM'ler gibi sanal makineler hakkındaki ayrıntıları veren bir runbook oluşturalım. Ayrıntılar için bkz . İlk grafik runbook'um.
Grafik runbook şu önemli runbook etkinliklerini kullanır:
- Otomasyon hesabı için yapılandırılmış yönetilen kimliği kullanarak Azure ile kimlik doğrulaması yapma.
- VM özelliklerini almak için Get-AzVM cmdlet'inin tanımı.
- VM adlarının çıktısını almak için Write-Output etkinliğini kullanın.
Etkinlik Get-AzVM
iki girişi tanımlar: VM adı ve kaynak grubu adı. Runbook her başlatıldığında bu adlar farklı olabileceğinden, bu girişleri kabul etmek için runbook'unuza giriş parametreleri eklemeniz gerekir. Azure Otomasyonu grafik yazma bölümüne bakın.
Giriş parametrelerini yapılandırmak için bu adımları izleyin.
Runbook'lar sayfasından grafik runbook'u seçin ve düzenle'ye tıklayın.
Grafik düzenleyicide Giriş ve çıkış düğmesine ve ardından Giriş ekle'ye tıklayarak Runbook Giriş Parametresi bölmesini açın.
Giriş ve Çıkış denetimi, runbook için tanımlanan giriş parametrelerinin listesini görüntüler. Burada yeni bir giriş parametresi ekleyebilir veya mevcut bir giriş parametresinin yapılandırmasını düzenleyebilirsiniz. Runbook'a yeni bir parametre eklemek için Giriş ekle'ye tıklayarak Runbook giriş parametresi dikey penceresini açın. Burada, Azure Otomasyonu grafik yazma bölümünde tanımlanan özellikleri kullanarak parametreleri yapılandırabilirsiniz.
Etkinlik tarafından kullanılacak aşağıdaki özelliklere sahip iki parametre oluşturun ve tamam'a
Get-AzVM
tıklayın.Parametre 1:
- AD -- VMName
- Tür -- Dize
- Zorunlu -- Hayır
Parametre 2:
- ResourceGroupName adını -- verin
- Tür -- Dize
- Zorunlu -- Hayır
- Varsayılan değer -- Özel
- Özel varsayılan değer -- VM'leri içeren kaynak grubunun adı
Giriş ve Çıkış denetimindeki parametreleri görüntüleyin.
Yeniden Tamam'a ve ardından Kaydet'e tıklayın.
Runbook'unuzu yayımlamak için Yayımla'ya tıklayın.
Python runbook'larında giriş parametrelerini yapılandırma
PowerShell, PowerShell İş Akışı ve grafik runbook'lardan farklı olarak, Python runbook'ları adlandırılmış parametreleri almaz. Runbook düzenleyicisi, tüm giriş parametrelerini bağımsız değişken değerleri dizisi olarak ayrıştırıyor. Modülü Python betiğinize içeri aktarıp diziyi sys
kullanarak diziye sys.argv
erişebilirsiniz. dizinin ilk öğesinin betiğin sys.argv[0]
adı olduğunu unutmayın. Bu nedenle, ilk gerçek giriş parametresi şeklindedir sys.argv[1]
.
Python runbook'unda giriş parametrelerinin nasıl kullanılacağına ilişkin bir örnek için bkz. Azure Otomasyonu'de ilk Python runbook'um.
Not
Boşluklu bağımsız değişkenler şu anda desteklenmemektedir. Geçici bir çözüm olarak, \\n'ye ek olarak \\t kullanabilirsiniz.
Runbook'larda giriş parametrelerine değer atama
Bu bölümde runbook'lardaki giriş parametrelerine değer geçirmenin çeşitli yolları açıklanmaktadır. Parametre değerlerini şu durumlarda atayabilirsiniz:
- Runbook başlatma
- Bir runbook'u test etme
- Runbook için bir zamanlamayı bağlama
- Runbook için web kancası oluşturma
Runbook başlatma ve parametreler atama
Runbook birçok şekilde başlatılabilir: Azure portalı aracılığıyla, web kancasıyla, PowerShell cmdlet'leriyle, REST API ile veya SDK ile.
Azure portalını kullanarak yayımlanmış bir runbook başlatma ve parametreler atama
Runbook'u Azure portalında başlattığınızda Runbook'u Başlat dikey penceresi açılır ve oluşturduğunuz parametrelerin değerlerini girebilirsiniz.
Giriş kutusunun altındaki etikette, parametre özniteliklerini tanımlamak için ayarlanmış olan özellikleri (örneğin, zorunlu veya isteğe bağlı, tür, varsayılan değer) görebilirsiniz. Parametre adının yanındaki yardım balonu, parametre giriş değerleri hakkında karar almak için gereken anahtar bilgilerini de tanımlar.
Not
Dize parametreleri, Dize türünde boş değerleri destekler. Giriş parametresi kutusuna girildiğinde [EmptyString]
parametresine boş bir dize geçirilir. Ayrıca, dize parametreleri Null'ı desteklemez. Dize parametresine herhangi bir değer geçirmezseniz, PowerShell bunu Null olarak yorumlar.
PowerShell cmdlet'lerini kullanarak yayımlanmış bir runbook başlatma ve parametreleri atama
Azure Resource Manager cmdlet'leri: Start-AzAutomationRunbook kullanarak bir kaynak grubunda oluşturulmuş bir Otomasyon runbook'u başlatabilirsiniz.
$params = @{"VMName"="WSVMClassic";"resourceGroupeName"="WSVMClassicSG"} Start-AzAutomationRunbook -AutomationAccountName "TestAutomation" -Name "Get-AzureVMGraphical" –ResourceGroupName $resourceGroupName -Parameters $params
Azure klasik dağıtım modeli cmdlet'leri: Start-AzureAutomationRunbook kullanarak varsayılan kaynak grubunda oluşturulmuş bir otomasyon runbook'u başlatabilirsiniz.
$params = @{"VMName"="WSVMClassic"; "ServiceName"="WSVMClassicSG"} Start-AzureAutomationRunbook -AutomationAccountName "TestAutomation" -Name "Get-AzureVMGraphical" -Parameters $params
Not
PowerShell cmdlet'lerini kullanarak bir runbook başlattığınızda, MicrosoftApplicationManagementStartedBy
değeriyle PowerShell
varsayılan parametresi oluşturulur. Bu parametreyi İş ayrıntıları bölmesinde görüntüleyebilirsiniz.
SDK kullanarak runbook başlatma ve parametreler atama
Azure Resource Manager yöntemi: Bir programlama dilinin SDK'sını kullanarak bir runbook başlatabilirsiniz. Otomasyon hesabınızda runbook başlatmaya yönelik bir C# kod parçacığı aşağıdadır. Tüm kodu GitHub depomuzda görüntüleyebilirsiniz.
public Job StartRunbook(string runbookName, IDictionary<string, string> parameters = null) { var response = AutomationClient.Jobs.Create(resourceGroupName, automationAccount, new JobCreateParameters { Properties = new JobCreateProperties { Runbook = new RunbookAssociationProperty { Name = runbookName }, Parameters = parameters } }); return response.Job; }
Azure klasik dağıtım modeli yöntemi: Bir programlama dilinin SDK'sını kullanarak bir runbook başlatabilirsiniz. Otomasyon hesabınızda runbook başlatmaya yönelik bir C# kod parçacığı aşağıdadır. Tüm kodu GitHub depomuzda görüntüleyebilirsiniz.
public Job StartRunbook(string runbookName, IDictionary<string, string> parameters = null) { var response = AutomationClient.Jobs.Create(automationAccount, new JobCreateParameters { Properties = new JobCreateProperties { Runbook = new RunbookAssociationProperty { Name = runbookName }, Parameters = parameters } }); return response.Job; }
Bu yöntemi başlatmak için runbook parametrelerini
VMName
veresourceGroupName
değerlerini depolamak için bir sözlük oluşturun. Ardından runbook'u başlatın. Aşağıda, yukarıda tanımlanan yöntemi çağırmak için C# kod parçacığı yer alır.IDictionary<string, string> RunbookParameters = new Dictionary<string, string>(); // Add parameters to the dictionary. RunbookParameters.Add("VMName", "WSVMClassic"); RunbookParameters.Add("resourceGroupName", "WSSC1"); //Call the StartRunbook method with parameters StartRunbook("Get-AzureVMGraphical", RunbookParameters);
REST API kullanarak bir runbook başlatma ve parametreler atama
Aşağıdaki istek URI'sine sahip yöntemini kullanarak PUT
Azure Otomasyonu REST API ile bir runbook işi oluşturabilir ve başlatabilirsiniz:https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/jobs/{jobName}?api-version=2017-05-15-preview
İstek URI'sinde aşağıdaki parametreleri değiştirin:
subscriptionId
: Azure abonelik kimliğiniz.resourceGroupName
: Otomasyon hesabının kaynak grubunun adı.automationAccountName
: Belirtilen bulut hizmetinde barındırılan Otomasyon hesabının adı.jobName
: İşin GUID değeri. PowerShell'deki GUID'ler kullanılarak[GUID]::NewGuid().ToString()*
oluşturulabilir.
Runbook işine parametre geçirmek için istek gövdesini kullanın. JSON biçiminde sağlanan aşağıdaki bilgileri alır:
- Runbook adı: Gerekli. İşin başlatılacak runbook'un adı.
- Runbook parametreleri: İsteğe bağlı. Parametre listesinin (ad, değer) biçimindeki sözlüğü; burada ad Dize türündedir ve değer herhangi bir geçerli JSON değeri olabilir.
Daha önce ve resourceGroupName
parametresiyle VMName
oluşturulan Get-AzureVMTextual runbook'unu başlatmak istiyorsanız, istek gövdesi için aşağıdaki JSON biçimini kullanın.
{
"properties":{
"runbook":{
"name":"Get-AzureVMTextual"},
"parameters":{
"VMName":"WindowsVM",
"resourceGroupName":"ContosoSales"}
}
}
İş başarıyla oluşturulursa bir HTTP durum kodu 201 döndürülür. Yanıt üst bilgileri ve yanıt gövdesi hakkında daha fazla bilgi için bkz . REST API kullanarak runbook işi oluşturma.
Runbook'u test edin ve parametreleri atayın
Test seçeneğini kullanarak runbook'unuzun taslak sürümünü test ettiğinizde Test sayfası açılır. Oluşturduğunuz parametrelerin değerlerini yapılandırmak için bu sayfayı kullanın.
Bir zamanlamayı runbook'a bağlama ve parametreler atama
Runbook'unuzun belirli bir saatte başlaması için bir zamanlamayı runbook'unuza bağlayabilirsiniz. Zamanlamayı oluştururken giriş parametreleri atarsınız ve runbook zamanlama tarafından başlatıldığında bu değerleri kullanır. Tüm zorunlu parametre değerleri sağlanana kadar zamanlamayı kaydedemezsiniz.
Runbook için web kancası oluşturma ve parametreler atama
Runbook'unuz için bir web kancası oluşturabilir ve runbook giriş parametrelerini yapılandırabilirsiniz. Tüm zorunlu parametre değerleri sağlanana kadar web kancasını kaydedemezsiniz.
Web kancası kullanarak bir runbook yürütürken, tanımladığınız giriş parametreleriyle birlikte önceden tanımlanmış giriş parametresi [WebhookData](automation-webhooks.md)
gönderilir.
Runbook'a JSON nesnesi geçirme
Bir runbook'a geçirmek istediğiniz verileri bir JSON dosyasında depolamak yararlı olabilir. Örneğin, bir runbook'a geçirmek istediğiniz tüm parametreleri içeren bir JSON dosyası oluşturabilirsiniz. Bunu yapmak için, JSON kodunu bir dizeye dönüştürmeniz ve ardından dizeyi runbook'a geçirmeden önce bir PowerShell nesnesine dönüştürmeniz gerekir.
Bu bölümde, PowerShell betiğinin Start-AzAutomationRunbook çağrısı yaparak bir PowerShell runbook'u başlatması ve JSON dosyasının içeriğini runbook'a geçirmesi örneği kullanılır. PowerShell runbook'u, JSON nesnesinden VM parametrelerini alarak bir Azure VM başlatır.
JSON dosyasını oluşturma
Aşağıdaki kodu bir metin dosyasına yazın ve yerel bilgisayarınızda herhangi bir yere test.json olarak kaydedin.
{
"VmName" : "TestVM",
"ResourceGroup" : "AzureAutomationTest"
}
Runbook oluşturma
Azure Otomasyonu'de Test-Json adlı yeni bir PowerShell runbook'u oluşturun.
JSON verilerini kabul etmek için runbook'un bir nesneyi giriş parametresi olarak alması gerekir. Runbook daha sonra JSON dosyasında tanımlanan özellikleri kullanabilir.
Param(
[parameter(Mandatory=$true)]
[object]$json
)
# 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
# Convert object to actual JSON
$json = $json | ConvertFrom-Json
# Use the values from the JSON object as the parameters for your command
Start-AzVM -Name $json.VMName -ResourceGroupName $json.ResourceGroup -DefaultProfile $AzureContext
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:
- 10. satırdan öğesini kaldırın
$AzureContext = (Connect-AzAccount -Identity).context
. - değerini ve ile
$AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context
değiştirin - İstemci Kimliğini girin.
Bu runbook'u Otomasyon hesabınızda kaydedin ve yayımlayın.
PowerShell'den runbook'u çağırma
Artık Azure PowerShell kullanarak yerel makinenizden runbook'u çağırabilirsiniz.
Gösterildiği gibi Azure'da oturum açın. Daha sonra Azure kimlik bilgilerinizi girmeniz istenir.
Connect-AzAccount
Not
PowerShell runbook'ları
Add-AzAccount
için veAdd-AzureRMAccount
diğer adlarıdırConnect-AzAccount
. Bu diğer adların grafik runbook'lar için kullanılamadığını unutmayın. Grafik runbook yalnızca kendisini kullanabilirConnect-AzAccount
.Kaydedilen JSON dosyasının içeriğini alın ve bir dizeye dönüştürün.
JsonPath
JSON dosyasını kaydettiğiniz yolu gösterir.$json = (Get-content -path 'JsonPath\test.json' -Raw) | Out-string
dize içeriğini
$json
bir PowerShell nesnesine dönüştürün.$JsonParams = @{"json"=$json}
parametreleri
Start-AzAutomationRunbook
için bir karma tablo oluşturun.$RBParams = @{ AutomationAccountName = 'AATest' ResourceGroupName = 'RGTest' Name = 'Test-Json' Parameters = $JsonParams }
değerini
Parameters
JSON dosyasındaki değerleri içeren PowerShell nesnesine ayarladığınıza dikkat edin.Runbook'u başlatın.
$job = Start-AzAutomationRunbook @RBParams
Sonraki adımlar
- Bir metin runbook'u hazırlamak için bkz. Azure Otomasyonu'de metin runbook'larını düzenleme.
- Grafik runbook'u hazırlamak için bkz. Azure Otomasyonu'de grafik runbook'ları yazma.