Aracılığıyla paylaş


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

Otomasyon PowerShell İş Akışı

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:

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.

  1. Runbook'lar sayfasından grafik runbook'u seçin ve düzenle'ye tıklayın.

  2. Grafik düzenleyicide Giriş ve çıkış düğmesine ve ardından Giriş ekle'ye tıklayarak Runbook Giriş Parametresi bölmesini açın.

    Otomasyon grafik runbook'u

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

    Yeni giriş ekleme

  4. Etkinlik tarafından kullanılacak aşağıdaki özelliklere sahip iki parametre oluşturun ve tamam'a Get-AzVMtı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ı
  5. Giriş ve Çıkış denetimindeki parametreleri görüntüleyin.

  6. Yeniden Tamam'a ve ardından Kaydet'e tıklayın.

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

Portalı kullanmaya başlama

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, MicrosoftApplicationManagementStartedBydeğeriyle PowerShellvarsayı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 ve resourceGroupName 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.

Parametreleri test edin ve atayın

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.

Parametreleri zamanlama ve atama

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ı oluşturma ve parametreleri atama

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.

WebhookData parametresi

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:

  1. 10. satırdan öğesini kaldırın $AzureContext = (Connect-AzAccount -Identity).context.
  2. değerini ve ile $AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).contextdeğiştirin
  3. İ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.

  1. 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 ve Add-AzureRMAccount diğer adlarıdır Connect-AzAccount. Bu diğer adların grafik runbook'lar için kullanılamadığını unutmayın. Grafik runbook yalnızca kendisini kullanabilir Connect-AzAccount .

  2. 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
    
  3. dize içeriğini $json bir PowerShell nesnesine dönüştürün.

    $JsonParams = @{"json"=$json}
    
  4. parametreleri Start-AzAutomationRunbookiç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.

  5. Runbook'u başlatın.

    $job = Start-AzAutomationRunbook @RBParams
    

Sonraki adımlar