Sdílet prostřednictvím


Konfigurace vstupních parametrů runbooku ve službě Automation

Vstupní parametry runbooku zvyšují flexibilitu runbooku tím, že umožňují předávání dat při spuštění. Tyto parametry umožňují, aby akce runbooku byly cílené na konkrétní scénáře a prostředí. Tento článek popisuje konfiguraci a použití vstupních parametrů v runboocích.

Můžete nakonfigurovat vstupní parametry pro PowerShell, pracovní postup PowerShellu, grafické runbooky a runbooky Pythonu. Runbook může mít více parametrů s různými datovými typy nebo žádné parametry. Vstupní parametry můžou být povinné nebo volitelné a pro volitelné parametry můžete použít výchozí hodnoty.

Hodnoty přiřadíte vstupním parametrům runbooku při spuštění. Runbook můžete spustit z webu Azure Portal, webové služby nebo PowerShellu. Můžete ho také spustit jako podřízený runbook, který se nazývá vložený v jiném runbooku.

Vstupní typy

Azure Automation podporuje různé hodnoty vstupních parametrů v různých typech runbooků. Podporované vstupní typy pro každý typ runbooku jsou uvedeny v následující tabulce.

Typ runbooku Podporované vstupy parametrů
PowerShell -Řetězec
– Security.SecureString
- INT32
-Boolean
-Datetime
-Pole
– Collections.Hashtable
– Management.Automation.SwitchParameter
Pracovní postup PowerShellu -Řetězec
– Security.SecureString
- INT32
-Boolean
-Datetime
-Pole
– Collections.Hashtable
– Management.Automation.SwitchParameter
Grafické prostředí PowerShell -Řetězec
- INT32
- INT64
-Boolean
-Desetinných
-Datetime
-Objekt
Python -Řetězec

Konfigurace vstupních parametrů v runboocích PowerShellu

Runbooky pracovních postupů PowerShellu a PowerShellu ve službě Azure Automation podporují vstupní parametry definované pomocí následujících vlastností.

Vlastnost Popis
Typ Povinný: Pro hodnotu parametru se očekává datový typ. Jakýkoli typ .NET je platný.
Název Požadováno. Název parametru Tento název musí být v rámci runbooku jedinečný, musí začínat písmenem a může obsahovat jenom písmena, číslice nebo podtržítka.
Povinné Nepovinné. Logická hodnota určuje, jestli parametr vyžaduje hodnotu. Pokud nastavíte hodnotu True, musí být při spuštění runbooku zadaná hodnota. Pokud nastavíte hodnotu False, je hodnota volitelná. Pokud pro vlastnost nezadáte hodnotu Mandatory , PowerShell ve výchozím nastavení považuje vstupní parametr za volitelný.
Default value Nepovinné. Hodnota, která se používá pro parametr, pokud při spuštění runbooku není předána žádná vstupní hodnota. Runbook může nastavit výchozí hodnotu pro libovolný parametr.

Windows PowerShell podporuje více atributů vstupních parametrů, než jsou uvedené výše, například ověřování, aliasy a sady parametrů. Azure Automation ale v současné době podporuje pouze uvedené vlastnosti vstupního parametru.

Podívejme se například na definici parametru v runbooku pracovního postupu PowerShellu. Tato definice má následující obecný tvar, kde jsou více parametrů odděleny čárkami.

Param
(
  [Parameter (Mandatory= $true/$false)]
  [Type] $Name1 = <Default value>,

  [Parameter (Mandatory= $true/$false)]
  [Type] $Name2 = <Default value>
)

Teď nakonfigurujeme vstupní parametry runbooku pracovního postupu PowerShellu, který vypíše podrobnosti o virtuálních počítačích, a to buď jeden virtuální počítač, nebo všechny virtuální počítače v rámci skupiny prostředků. Tento runbook má dva parametry, jak je znázorněno na následujícím snímku obrazovky: název virtuálního počítače (VMName) a název skupiny prostředků (resourceGroupName).

Automation PowerShell Workflow

V této definici parametru jsou vstupní parametry jednoduchými parametry řetězce typu.

Mějte na paměti, že runbooky PowerShellu a pracovního postupu PowerShellu podporují všechny jednoduché typy a komplexní typy, například Object vstupní parametry.PSCredential Pokud má runbook vstupní parametr objektu, musíte k předání hodnoty použít zatřiďovací tabulku PowerShellu s páry name-value. V runbooku máte například následující parametr.

[Parameter (Mandatory = $true)]
[object] $FullName

V tomto případě můžete parametru předat následující hodnotu.

@{"FirstName"="Joe";"MiddleName"="Bob";"LastName"="Smith"}

Pro runbooky PowerShellu 7.1 zadejte vstupní parametry pole v následujícím formátu:

Název Hodnota
TESTPARAMETER dělá, to, dokonce i práce

Poznámka:

Pokud nepředáte hodnotu volitelnému parametru String s výchozí hodnotou null, hodnota parametru je prázdný řetězec místo null.

Konfigurace vstupních parametrů v grafických runboocích

Abychom si ukázali konfiguraci vstupních parametrů grafického runbooku, vytvoříme runbook, který vypíše podrobnosti o virtuálních počítačích, a to buď jeden virtuální počítač, nebo všechny virtuální počítače v rámci skupiny prostředků. Podrobnosti najdete v části Můj první grafický runbook.

Grafický runbook používá tyto hlavní aktivity runbooku:

  • Ověřování pomocí spravované identity nakonfigurované pro účet Automation
  • Definice rutiny Get-AzVM pro získání vlastností virtuálního počítače
  • Použití aktivity Write-Output k výstupu názvů virtuálních počítačů.

Aktivita Get-AzVM definuje dva vstupy, název virtuálního počítače a název skupiny prostředků. Vzhledem k tomu, že se tyto názvy můžou při každém spuštění runbooku lišit, musíte do runbooku přidat vstupní parametry, aby tyto vstupy přijímaly. Přečtěte si informace o grafickém vytváření ve službě Azure Automation.

Podle těchto kroků nakonfigurujte vstupní parametry.

  1. Na stránce Runbooky vyberte grafický runbook a potom klikněte na Upravit.

  2. V grafickém editoru klikněte na tlačítko Vstup a výstup a potom přidejte vstup a otevřete podokno Vstupní parametr runbooku.

    Automation graphical runbook

  3. Ovládací prvek Vstup a výstup zobrazí seznam vstupních parametrů definovaných pro runbook. Tady můžete buď přidat nový vstupní parametr, nebo upravit konfiguraci existujícího vstupního parametru. Pokud chcete přidat nový parametr runbooku, klikněte na Přidat vstup a otevřete okno vstupního parametru runbooku, kde můžete konfigurovat parametry pomocí vlastností definovaných v grafickém vytváření ve službě Azure Automation.

    Add new input

  4. Vytvořte dva parametry s následujícími vlastnostmi Get-AzVM , které má aktivita používat, a klepněte na tlačítko OK.

    • Parametr 1:

      • Název -- virtuálního počítače
      • Typ – řetězec
      • -- Povinné ne
    • Parametr 2:

      • Název -- skupiny prostředků
      • Typ – řetězec
      • -- Povinné ne
      • Výchozí hodnota -- Vlastní
      • Vlastní výchozí hodnota – název skupiny prostředků, která obsahuje virtuální počítače
  5. Prohlédněte si parametry v ovládacím prvku Vstup a Výstup.

  6. Znovu klepněte na tlačítko OK a klepněte na tlačítko Uložit.

  7. Kliknutím na Publikovat publikujete runbook.

Konfigurace vstupních parametrů v runboocích Pythonu

Na rozdíl od PowerShellu, pracovního postupu PowerShellu a grafických runbooků nepoužívají runbooky Pythonu pojmenované parametry. Editor runbooku analyzuje všechny vstupní parametry jako pole hodnot argumentů. K poli se dostanete tak, že modul naimportujete sys do skriptu Pythonu a pak ho sys.argv použijete. Je důležité poznamenat, že první prvek pole, sys.argv[0]je název skriptu. Proto je prvním skutečným vstupním parametrem sys.argv[1].

Příklad použití vstupních parametrů v runbooku Pythonu najdete v tématu Můj první runbook Pythonu ve službě Azure Automation.

Poznámka:

Argumenty s mezerami se v současné době nepodporují. Jako alternativní řešení můžete kromě \\n použít \\t.

Přiřazení hodnot ke vstupním parametrům v runboocích

Tato část popisuje několik způsobů předávání hodnot vstupním parametrům v runboocích. Hodnoty parametrů můžete přiřadit při:

Spuštění runbooku a přiřazení parametrů

Runbook se dá spustit mnoha způsoby: prostřednictvím webu Azure Portal, s webhookem, s rutinami PowerShellu, rozhraním REST API nebo se sadou SDK.

Spuštění publikovaného runbooku pomocí webu Azure Portal a přiřazení parametrů

Když runbook spustíte na webu Azure Portal, otevře se okno Spustit runbook a můžete zadat hodnoty pro parametry, které jste vytvořili.

Start using the portal

V popisku pod vstupním polem můžete zobrazit vlastnosti, které byly nastaveny tak, aby definovaly atributy parametrů, například povinné nebo volitelné, typ, výchozí hodnota. Bublina nápovědy vedle názvu parametru také definuje klíčové informace potřebné k rozhodování o vstupních hodnotách parametrů.

Poznámka:

Parametry řetězce podporují prázdné hodnoty typu String. Zadáním [EmptyString] do pole vstupního parametru předá parametru prázdný řetězec. Parametry řetězce také nepodporují hodnotu Null. Pokud nepředáte žádnou hodnotu parametru řetězce, PowerShell ji interpretuje jako null.

Spuštění publikovaného runbooku pomocí rutin PowerShellu a přiřazení parametrů

  • Rutiny Azure Resource Manageru: Runbook služby Automation vytvořený ve skupině prostředků můžete spustit pomocí runbooku Start-AzAutomationRunbook.

       $params = @{"VMName"="WSVMClassic";"resourceGroupeName"="WSVMClassicSG"}
    
       Start-AzAutomationRunbook -AutomationAccountName "TestAutomation" -Name "Get-AzureVMGraphical" –ResourceGroupName $resourceGroupName -Parameters $params
    
  • Rutiny modelu nasazení Azure Classic: Pomocí rutin Start-AzureAutomationRunbook můžete spustit runbook automation vytvořený ve výchozí skupině prostředků.

       $params = @{"VMName"="WSVMClassic"; "ServiceName"="WSVMClassicSG"}
    
       Start-AzureAutomationRunbook -AutomationAccountName "TestAutomation" -Name "Get-AzureVMGraphical" -Parameters $params
    

Poznámka:

Když spustíte runbook pomocí rutin PowerShellu, vytvoří se výchozí parametr MicrosoftApplicationManagementStartedBys hodnotou PowerShell. Tento parametr můžete zobrazit v podokně podrobností úlohy.

Spuštění runbooku pomocí sady SDK a přiřazení parametrů

  • Metoda Azure Resource Manageru: Runbook můžete spustit pomocí sady SDK programovacího jazyka. Níže je fragment kódu jazyka C# pro spuštění runbooku ve vašem účtu Automation. Veškerý kód můžete zobrazit v našem úložišti GitHub.

    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;
    }
    
  • Metoda modelu nasazení Azure Classic: Runbook můžete spustit pomocí sady SDK programovacího jazyka. Níže je fragment kódu jazyka C# pro spuštění runbooku ve vašem účtu Automation. Veškerý kód můžete zobrazit v našem úložišti GitHub.

    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;
    }
    

    Pokud chcete tuto metodu spustit, vytvořte slovník pro uložení parametrů VMName runbooku a resourceGroupName jejich hodnot. Pak spusťte runbook. Níže je fragment kódu jazyka C# pro volání metody definované výše.

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

Spuštění runbooku pomocí rozhraní REST API a přiřazení parametrů

Pomocí metody s následujícím identifikátorem PUT URI požadavku můžete vytvořit a spustit úlohu runbooku pomocí rozhraní REST API služby Azure Automation: https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/jobs/{jobName}?api-version=2017-05-15-preview

V identifikátoru URI požadavku nahraďte následující parametry:

  • subscriptionId: ID vašeho předplatného Azure.
  • resourceGroupName: Název skupiny prostředků pro účet Automation.
  • automationAccountName: Název účtu Automation, který je hostovaný v zadané cloudové službě.
  • jobName: Identifikátor GUID pro úlohu. Identifikátory GUID v PowerShellu je možné vytvořit pomocí [GUID]::NewGuid().ToString()*.

Pokud chcete předat parametry úloze runbooku, použijte text požadavku. Vezme následující informace, které jsou uvedeny ve formátu JSON:

  • Název runbooku: Povinné. Název runbooku, který má úloha spustit.
  • Parametry runbooku: Volitelné. Slovník seznamu parametrů ve formátu (název, hodnota), kde název je typu String a hodnota může být libovolná platná hodnota JSON.

Pokud chcete spustit runbook Get-AzureVMTextual vytvořený dříve s VMName parametry a resourceGroupName jako parametry, použijte pro text požadavku následující formát JSON.

    {
      "properties":{
        "runbook":{
        "name":"Get-AzureVMTextual"},
      "parameters":{
         "VMName":"WindowsVM",
         "resourceGroupName":"ContosoSales"}
        }
    }

Pokud se úloha úspěšně vytvoří, vrátí se stavový kód HTTP 201. Další informace o hlavičkách odpovědi a textu odpovědi najdete v tématu vytvoření úlohy runbooku pomocí rozhraní REST API.

Testování runbooku a přiřazení parametrů

Když testujete koncept verze runbooku pomocí možnosti test, otevře se stránka Test. Na této stránce můžete nakonfigurovat hodnoty pro parametry, které jste vytvořili.

Test and assign parameters

Plán můžete propojit s runbookem tak, aby se runbook spustil v určitém čase. Při vytváření plánu přiřadíte vstupní parametry a runbook tyto hodnoty použije při spuštění podle plánu. Plán nelze uložit, dokud nebudou zadané všechny hodnoty povinných parametrů.

Schedule and assign parameters

Vytvoření webhooku pro runbook a přiřazení parametrů

Pro runbook můžete vytvořit webhook a nakonfigurovat vstupní parametry runbooku. Webhook nelze uložit, dokud nebudou zadané všechny hodnoty povinných parametrů.

Create webhook and assign parameters

Při spuštění runbooku pomocí webhooku se odešle předdefinovaný vstupní parametr [WebhookData](automation-webhooks.md) spolu se vstupními parametry, které definujete.

WebhookData parameter

Předání objektu JSON do runbooku

Může být užitečné ukládat data, která chcete předat do runbooku v souboru JSON. Můžete například vytvořit soubor JSON, který obsahuje všechny parametry, které chcete předat do runbooku. Uděláte to tak, že před předáním kódu do runbooku převedete kód JSON na řetězec a potom ho převedete na objekt PowerShellu.

Tato část používá příklad, ve kterém skript PowerShellu volá Runbook Start-AzAutomationRunbook ke spuštění runbooku PowerShellu a předává obsah souboru JSON do runbooku. Runbook PowerShellu spustí virtuální počítač Azure načtením parametrů virtuálního počítače z objektu JSON.

Vytvoření souboru JSON

Do textového souboru zadejte následující kód a uložte ho jako test.json někam do místního počítače.

{
   "VmName" : "TestVM",
   "ResourceGroup" : "AzureAutomationTest"
}

Vytvoření runbooku

Vytvořte nový runbook PowerShellu s názvem Test-Json ve službě Azure Automation.

Aby runbook přijímal data JSON, musí jako vstupní parametr převzít objekt. Runbook pak může použít vlastnosti definované v souboru JSON.

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

Pokud chcete, aby runbook běžel se spravovanou identitou přiřazenou systémem, nechejte kód tak, jak je. Pokud chcete použít spravovanou identitu přiřazenou uživatelem, pak:

  1. Z řádku 10 odeberte $AzureContext = (Connect-AzAccount -Identity).context,
  2. Nahraďte ho a $AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context
  3. Zadejte ID klienta.

Uložte a publikujte tento runbook ve svém účtu Automation.

Volání runbooku z PowerShellu

Runbook teď můžete volat z místního počítače pomocí Azure PowerShellu.

  1. Přihlaste se k Azure, jak je znázorněno. Potom se zobrazí výzva k zadání přihlašovacích údajů Azure.

    Connect-AzAccount
    

    Poznámka:

    Pro runbooky Add-AzAccount PowerShellu a Add-AzureRMAccount jsou aliasy pro Connect-AzAccount. Všimněte si, že tyto aliasy nejsou k dispozici pro grafické runbooky. Grafický runbook může používat Connect-AzAccount pouze sám sebe.

  2. Získejte obsah uloženého souboru JSON a převeďte ho na řetězec. JsonPath označuje cestu, kam jste uložili soubor JSON.

    $json =  (Get-content -path 'JsonPath\test.json' -Raw) | Out-string
    
  3. Převeďte obsah $json řetězce na objekt PowerShellu.

    $JsonParams = @{"json"=$json}
    
  4. Vytvořte hashovací tabulku pro parametry pro Start-AzAutomationRunbook.

    $RBParams = @{
         AutomationAccountName = 'AATest'
         ResourceGroupName = 'RGTest'
         Name = 'Test-Json'
         Parameters = $JsonParams
    }
    

    Všimněte si, že nastavujete hodnotu Parameters objektu PowerShellu, který obsahuje hodnoty ze souboru JSON.

  5. Spusťte runbook.

    $job = Start-AzAutomationRunbook @RBParams
    

Další kroky