Kurz: Vytvoření runbooku pracovního postupu PowerShellu ve službě Automation

V tomto kurzu se seznámíte s vytvořením runbooku pracovního postupu PowerShellu ve službě Azure Automation. Runbooky pracovního postupu PowerShellu jsou textové runbooky založené na pracovním postupu Windows PowerShellu. Kód runbooku můžete vytvořit a upravit pomocí textového editoru na webu Azure Portal.

Poznámka:

Tento článek platí pro PowerShell 5.1; PowerShell 7.1 (Preview) a PowerShell 7.2 nepodporují pracovní postupy.

V tomto kurzu se naučíte:

  • Vytvoření runbooku pracovního postupu v PowerShellu
  • Testování a publikování runbooku
  • Spuštění a sledování stavu úlohy runbooku
  • Přidání ověřování pro správu prostředků Azure
  • Aktualizace parametrů runbooku pro spuštění virtuálního počítače Azure

Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.

Požadavky

  • Účet Azure Automation s alespoň jednou spravovanou identitou přiřazenou uživatelem. Další informace najdete v tématu Povolení spravované identity.
  • Moduly Az: Az.Accounts a Az.Compute importovány do účtu Automation. Další informace najdete v tématu Import modulů Az.
  • Dva nebo více virtuálních počítačů Azure Vzhledem k tomu, že tyto počítače zastavíte a spustíte, neměly by se jednat o produkční virtuální počítače.
  • Modul Azure Az PowerShell nainstalovaný na vašem počítači. Pokud chcete nainstalovat nebo upgradovat, přečtěte si, jak nainstalovat modul Azure Az PowerShell.

Přiřazení oprávnění spravovaným identitám

Přiřaďte oprávnění příslušné spravované identitě , aby mohla zastavit virtuální počítač. Runbook může používat spravovanou identitu přiřazenou systémem účtu Automation nebo spravovanou identitu přiřazenou uživatelem. Kroky jsou k dispozici pro přiřazení oprávnění ke každé identitě. Následující postup se používá na webu Azure Portal. Pokud dáváte přednost používání PowerShellu, přečtěte si téma Přiřazení rolí Azure pomocí Azure PowerShellu.

  1. Přihlaste se k webu Azure Portal a přejděte ke svému účtu Automation.

  2. V části Nastavení účtu vyberte Identita (Preview).

  3. Na kartě Přiřazený systém v části Oprávnění vyberte přiřazení rolí Azure a otevřete stránku přiřazení rolí Azure.

    Selecting Azure role assignments in portal.

  4. Výběrem možnosti + Přidat přiřazení role (Preview) otevřete stránku Přidat přiřazení role (Preview).

    Add role assignments in portal.

  5. Vyberte příslušné hodnoty.

    Vlastnost Description
    Obor Obor je sada prostředků, na které se přiřazení role vztahuje. V rozevíracím seznamu vyberte skupinu prostředků.
    Předplatné Toto pole by mělo být automaticky vyplněno vaším předplatným.
    Skupina prostředků V rozevíracím seznamu vyberte skupinu prostředků a udělte oprávnění identitě.
    Role V rozevíracím seznamu vyberte uživatele DevTest Labs.
  6. Vyberte Uložit a potom zavřete stránku přiřazení rolí Azure, abyste se vrátili na kartu Přiřazený systém.

  7. Vyberte kartu Přiřazené uživatelem.

  8. Výběrem spravované identity přiřazené uživatelem ze seznamu otevřete stránku Spravovaná identita .

    Selecting user-assigned managed identity in portal.

  9. Poznamenejte si ID klienta pro pozdější použití.

    Showing Client ID for managed identity in portal

  10. V nabídce vlevo vyberte přiřazení rolí Azure a potom + Přidat přiřazení role (Preview) a otevřete stránku Přidat přiřazení role (Preview).

    Add role assignments in portal for user-assigned identity.

  11. Vyberte příslušné hodnoty.

    Vlastnost Description
    Obor V rozevíracím seznamu vyberte skupinu prostředků.
    Předplatné Toto pole by mělo být automaticky vyplněno vaším předplatným.
    Skupina prostředků V rozevíracím seznamu vyberte skupinu prostředků a udělte oprávnění identitě.
    Role V rozevíracím seznamu vyberte uživatele DevTest Labs.
  12. Vyberte Uložit a potom zavřete stránku přiřazení rolí Azure, abyste se vrátili na kartu Přiřazené uživatelem.

Vytvoření nového runbooku

Začněte vytvořením jednoduchého runbooku pracovního postupu PowerShellu. Jednou z výhod pracovních postupů Windows PowerShellu je možnost provádět sadu příkazů paralelně, nikoli postupně jako u typického skriptu.

Poznámka:

Při vytváření runbooků vydaných verzí je na webu Azure Portal nové prostředí. Když vyberete okno> Runbooky Vytvořit runbook, otevře se nová stránka Vytvořit runbook s příslušnými možnostmi.

  1. Na otevřené stránce účtu Automation v části Automatizace procesů vyberte Runbooky.

    Create PowerShell workflow runbook from portal

  2. Vyberte + Vytvořit runbook.

    1. Pojmenujte runbook. Například otestujte.
    2. V rozevírací nabídce typu runbooku vyberte Pracovní postup PowerShellu.
    3. V rozevíracím seznamu verze modulu runtime vyberte 5.1.
    4. Zadejte příslušný popis.
    5. Vyberte Vytvořit.

    PowerShell workflow runbook options from portal

Přidání kódu do runbooku

Kód můžete buď zadat přímo do runbooku, nebo můžete vybrat rutiny, runbooky a prostředky z ovládacího prvku Knihovna a přidat je do runbooku s libovolnými souvisejícími parametry. V tomto kurzu zadáte kód přímo do runbooku.

Runbook je aktuálně prázdný jenom s požadovaným Workflow klíčovým slovem, názvem runbooku a složenými závorkami, které zapisují celý pracovní postup.

Workflow MyFirstRunbook-Workflow
{
}
  1. Pomocí klíčového Parallel slova můžete vytvořit blok skriptu s více příkazy, které se budou spouštět souběžně. Mezi složenými závorkami zadejte následující kód:

    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-Date
    
  2. Runbook uložte výběrem možnosti Uložit.

Otestování runbooku

Než runbook publikujete, abyste ho zpřístupňovali v produkčním prostředí, měli byste ho otestovat, abyste měli jistotu, že funguje správně. Testování runbooku spustí jeho verzi Konceptu a umožňuje interaktivní zobrazení jeho výstupu.

  1. Výběrem testovacího podokna otevřete stránku Test .

  2. Výběrem možnosti Start spusťte test. Vytvoří se úloha runbooku a její stav se zobrazí v podokně.

    Stav úlohy se spustí ve frontě, což znamená, že úloha čeká na zpřístupnění pracovního procesu runbooku v cloudu. Stav se změní na Začátek, když pracovní proces deklaruje úlohu. Nakonec se stav Spustí, když se runbook skutečně spustí.

  3. Po dokončení úlohy runbooku se na stránce Test zobrazí výstup. Výstup by měl vypadat podobně jako na následujícím obrázku:

    PowerShell workflow runbook parallel output

    Zkontrolujte výstup. Vše v Parallel bloku, včetně Start-Sleep příkazu, se spustí ve stejnou dobu. Stejné příkazy mimo Parallel blok běžely postupně, jak je znázorněno různými časovými razítky data.

  4. Zavřete stránku Test a vraťte se na plátno.

Publikování a spuštění runbooku

Vytvořený runbook je stále v režimu konceptů. Před spuštěním v produkčním prostředí musíte runbook publikovat. Když runbook publikujete, přepíšete vydanou verzi verzí v režimu konceptu. V tomto případě zatím ještě publikovanou verzi nemáte, protože jste runbook teprve vytvořili.

  1. Po zobrazení výzvy vyberte Publikovat , abyste runbook publikovali, a pak po zobrazení výzvy ano .

  2. Pole Stav teď zobrazuje publikováno. Projděte si možnosti v horní části, které vám umožní spustit runbook nyní, naplánovat budoucí čas spuštění nebo vytvořit webhook , aby runbook mohl být spuštěn prostřednictvím volání HTTP. Pokud chcete runbook spustit, vyberte Spustit a po zobrazení výzvy vyberte Ano.

    PowerShell workflow runbook overview page

  3. Otevře se stránka Úloha pro úlohu runbooku, která byla vytvořena. V takovém případě ponechte stránku otevřenou, abyste mohli sledovat průběh úlohy. Pole Stav odpovídá stavům, které jste viděli při testování runbooku.

    Screenshot of the runbook Job page.

  4. Jakmile se zobrazí stav runbooku Dokončeno, vyberte Výstup. Výstup by měl vypadat podobně jako výstup testu.

  5. Zavřete stránku Úlohy a vraťte se na stránku Přehled runbooku.

  6. V části Prostředky vyberte Úlohy. Tato stránka obsahuje seznam všech úloh vytvořených vaším runbookem. Měla by se zobrazit jenom jedna úloha, protože jste ji spustili jenom jednou.

  7. Výběrem úlohy otevřete stejnou stránku úlohy , kterou jste zobrazili při spuštění runbooku. Na této stránce můžete zobrazit podrobnosti o libovolné úloze vytvořené pro runbook. Zavřete stránku Úlohy a vraťte se na stránku Přehled runbooku.

Přidání ověřování pro správu prostředků Azure

Runbook jste otestovali a publikovali, ale zatím nedělá nic užitečného. Chcete po něm, aby spravoval prostředky Azure. To nejde udělat, pokud se neověří pomocí přihlašovacích údajů pro předplatné. Runbook používá spravovanou identitu přiřazenou systémem účtu Automation k ověření v Azure k provedení akce správy na virtuálním počítači. Runbook je možné snadno upravit tak, aby používal spravovanou identitu přiřazenou uživatelem.

  1. Vyberte Přehled a pak upravte textový editor.

  2. Nahraďte stávající kód následujícím kódem:

    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
    Connect-AzAccount -Identity
    
    # set and store context
    $AzureContext = Set-AzContext –SubscriptionId "<SubscriptionID>"
    }
    

    $resourceGroup Upravte proměnnou platnou hodnotou představující vaši skupinu prostředků.

  3. 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 9 odeberte Connect-AzAccount -Identity,
    2. Nahraďte ho a Connect-AzAccount -Identity -AccountId <ClientId>
    3. Zadejte ID klienta, které jste získali dříve.
  4. Vyberte Uložit a potom podokno Test.

  5. Výběrem možnosti Start spusťte test. Po dokončení by se měl zobrazit výstup podobný následujícímu, který zobrazuje základní informace z vašeho účtu. Tato akce potvrzuje platnost přihlašovacích údajů.

    Basic information that confirms credentials.

  6. Zavřete stránku Test a vraťte se na plátno.

Přidání kódu pro spuštění virtuálního počítače

Teď, když se runbook ověřuje v předplatném Azure, můžete spravovat prostředky. Přidejte příkaz pro spuštění virtuálního počítače. Můžete vybrat libovolný virtuální počítač ve svém předplatném Azure a prozatím ho pevně zakódujete v runbooku.

  1. Níže uvedený kód přidejte jako poslední řádek bezprostředně před pravou složenou závorku. Nahraďte VMName skutečným názvem virtuálního počítače.

    Start-AzVM -Name "VMName" -ResourceGroupName $resourceGroup -DefaultProfile $AzureContext
    
  2. Otestujte runbook a ověřte, že se virtuální počítač spustil. Pak se vraťte na plátno.

Přidání vstupních parametrů do runbooku

Runbook aktuálně spouští virtuální počítač, který jste v runbooku pevně zakódovali. Bude užitečnější, pokud můžete určit virtuální počítač při spuštění runbooku. Přidejte do runbooku vstupní parametry pro zajištění této funkce.

  1. Řádek 3 $resourceGroup = "resourceGroupName"nahraďte následujícím kódem:

    Param(
        [string]$resourceGroup,
        [string]$VMName
    )
    
  2. Start-AzVM Předchozí příkaz nahraďte následujícím kódem:

    Start-AzVM -Name $VMName -ResourceGroupName $resourceGroup -DefaultProfile $AzureContext
    
  3. Otestujte runbook a ověřte, že se virtuální počítač spustil. Pak se vraťte na plátno.

Správa více virtuálních počítačů současně

Konstruktor můžete použít ForEach -Parallel ke zpracování příkazů pro každou položku v kolekci současně. Upravte kód tak, aby runbook teď fungoval:

  • Přijměte kolekci názvů virtuálních počítačů.
  • Přijměte parametr pro zastavení nebo spuštění virtuálních počítačů a
  • Paralelní provádění akcí na všech virtuálních počítačích
  1. Nahraďte veškerý existující kód následujícím kódem:

    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
       Connect-AzAccount -Identity
    
       # set and store context
       $AzureContext = Set-AzContext –SubscriptionId "<SubscriptionID>"
    
       # 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'."
       }
       }
    
  2. 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 9 odeberte Connect-AzAccount -Identity,
    2. Nahraďte ho a Connect-AzAccount -Identity -AccountId <ClientId>
    3. Zadejte ID klienta, které jste získali dříve.
  3. Po zobrazení výzvy vyberte Uložit, pak Publikovat a potom Ano .

  4. Na stránce Přehled vyberte Start.

  5. Vyplňte parametry a pak vyberte OK.

    Parametr Popis
    RESOURCEGROUP Zadejte název skupiny prostředků virtuálních počítačů.
    Virtuální počítače Názvy virtuálních počítačů zadejte pomocí následující syntaxe: ["VM1","VM2","VM3"]
    Akce Zadejte stop nebo start.
  6. Přejděte na seznam virtuálních počítačů a aktualizujte stránku každých několik sekund. Všimněte si, že akce pro každý virtuální počítač probíhá paralelně. Bez klíčového -Parallel slova by se akce prováděly postupně. I když se virtuální počítače spustí postupně, každý virtuální počítač může dosáhnout fáze spuštění v mírně odlišných časech na základě charakteristik jednotlivých virtuálních počítačů.

Vyčištění prostředků

Pokud tento runbook nebudete dál používat, odstraňte ho pomocí následujících kroků:

  1. Přejděte ke svému účtu Automation.
  2. V části Automatizace procesů vyberte Runbooky.
  3. Vyberte runbook.
  4. Na stránce Přehled runbooku vyberte Odstranit.

Další kroky

V tomto kurzu jste vytvořili runbook pracovního postupu PowerShellu. Podívejte se na runbooky Pythonu 3: