Självstudie: Skapa en PowerShell Workflow-runbook i Automation
Den här självstudien beskriver steg för steg hur du skapar en PowerShell Workflow-runbook i Azure Automation. PowerShell-arbetsflödesrunbooks är läroböcker baserade på Windows PowerShell-arbetsflöde. Du kan skapa och redigera koden för runbooken med hjälp av textredigeraren i Azure-portalen.
Kommentar
Den här artikeln gäller endast för PowerShell 5.1. PowerShell 7+ versioner stöder inte arbetsflöden och inaktuella runbooks kan inte uppdateras. Vi rekommenderar att du använder PowerShell 7.2-runbooks för avancerade funktioner som parallell jobbkörning. Läs mer om begränsningar för PowerShell-arbetsflödesrunbooks.
I den här självstudien lär du dig att:
- Skapa en PowerShell Workflow-runbook
- Testa och publicera runbooken
- Kör och spåra status för runbook-jobbet
- Lägga till autentisering för att hantera Azure-resurser
- Uppdatera runbook-parametrarna för att starta en virtuell Azure-dator
Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.
Förutsättningar
- Ett Azure Automation-konto med minst en användartilldelad hanterad identitet. Mer information finns i Aktivera hanterad identitet.
- Az-moduler:
Az.Accounts
ochAz.Compute
importeras till Automation-kontot. Mer information finns i Importera Az-moduler. - Två eller flera virtuella Azure-datorer. Eftersom du stoppar och startar dessa datorer bör de inte vara virtuella produktionsdatorer.
- Azure Az PowerShell-modulen som är installerad på datorn. Information om hur du installerar eller uppgraderar finns i Installera Azure Az PowerShell-modulen.
Tilldela behörigheter till hanterade identiteter
Tilldela behörigheter till lämplig hanterad identitet så att den kan stoppa en virtuell dator. Runbooken kan använda antingen den systemtilldelade hanterade identiteten för Automation-kontot eller en användartilldelad hanterad identitet. Steg tillhandahålls för att tilldela behörigheter till varje identitet. Stegen nedan använder Azure-portalen. Om du föredrar att använda PowerShell kan du läsa Tilldela Azure-roller med Hjälp av Azure PowerShell.
Logga in på Azure Portal och gå till ditt Automation-konto.
Under Kontoinställningar väljer du Identitet (förhandsversion).
På fliken Systemtilldelad går du till Behörigheter och väljer Azure-rolltilldelningar för att öppna sidan Azure-rolltilldelningar .
Välj + Lägg till rolltilldelning (förhandsversion) för att öppna sidan Lägg till rolltilldelning (förhandsversion).
Välj lämpliga värden.
Property Description Definitionsområde Omfång är en uppsättning resurser som rolltilldelningen gäller för. I listrutan väljer du Resursgrupp. Prenumeration Det här fältet ska fyllas i automatiskt med din prenumeration. Resursgrupp I listrutan väljer du resursgruppen för att ge identitetsbehörigheten över. Roll I listrutan väljer du DevTest Labs-användare. Välj Spara och stäng sedan sidan Azure-rolltilldelningar för att återgå till fliken Systemtilldelad .
Välj fliken Användartilldelade .
Välj din användartilldelade hanterade identitet i listan för att öppna sidan Hanterad identitet .
Anteckna klient-ID:t för senare användning.
På den vänstra menyn väljer du Azure-rolltilldelningar och sedan + Lägg till rolltilldelning (förhandsversion) för att öppna sidan Lägg till rolltilldelning (förhandsversion).
Välj lämpliga värden.
Property Description Definitionsområde I listrutan väljer du Resursgrupp. Prenumeration Det här fältet ska fyllas i automatiskt med din prenumeration. Resursgrupp I listrutan väljer du resursgruppen för att ge identitetsbehörigheten över. Roll I listrutan väljer du DevTest Labs-användare. Välj Spara och stäng sedan sidan Azure-rolltilldelningar för att återgå till fliken Användartilldelad .
Skapa ny runbook
Börja med att skapa en enkel PowerShell-arbetsflödesrunbook. En fördel med Windows PowerShell-arbetsflöden är möjligheten att utföra en uppsättning kommandon parallellt i stället för sekventiellt som med ett typiskt skript.
Kommentar
När du skapar en versionsrunbook får du en ny upplevelse i Azure-portalen. När du väljer Runbooks-bladet >Skapa en runbook öppnas en ny sida Skapa en runbook med tillämpliga alternativ.
På sidan för ditt öppna Automation-konto går du till ProcessAutomatisering och väljer Runbooks
Välj + Skapa en runbook.
- Ge runbooken namnet. Till exempel test.
- I listrutan Runbook-typ väljer du PowerShell-arbetsflöde.
- Välj 5.1 i listrutan Körningsversion.
- Ange tillämplig beskrivning.
- Välj Skapa.
Lägga till kod i runbooken
Du kan antingen skriva kod direkt i runbooken eller välja cmdletar, runbooks och tillgångar från bibliotekskontrollen och lägga till dem i runbooken med relaterade parametrar. I den här självstudien skriver du kod direkt i runbooken.
Din runbook är för närvarande tom med endast det nyckelord som krävs workflow
, namnet på runbooken och de klammerparenteser som omsluter hela arbetsflödet.
workflow MyFirstRunbook-Workflow
{
}
Du kan använda nyckelordet
Parallel
för att skapa ett skriptblock med flera kommandon som körs samtidigt. Ange följande kod mellan klammerparenteserna:parallel { Write-Output "Parallel" Get-Date Start-Sleep -Seconds 3 Get-Date } Write-Output " `r`n" Write-Output "Non-Parallel" Get-Date Start-Sleep -Seconds 3 Get-Date
Spara runbooken genom att välja Spara.
Testa runbooken
Innan du publicerar runbooken för att göra den tillgänglig i produktion bör du testa den för att se till att den fungerar korrekt. När du testar en runbook körs dess utkastversion och du kan visa dess utdata interaktivt.
Välj testfönstret för att öppna sidan Test .
Välj Starta för att starta testet. Ett runbook-jobb skapas och dess status visas i fönstret.
Jobbstatusen börjar som I kö, vilket indikerar att jobbet väntar på att en runbook-arbetare i molnet ska bli tillgänglig. Statusen ändras till Start när en arbetare gör anspråk på jobbet. Slutligen blir statusen Körs när runbooken faktiskt börjar köras.
När runbook-jobbet är klart visar testsidan utdata. Utdata bör se ut ungefär så här:
Granska utdata. Allt i blocket
Parallel
, inklusiveStart-Sleep
kommandot, körs samtidigt. Samma kommandon utanförParallel
blocket kördes sekventiellt, vilket visas av de olika datumtidsstämplarna.Stäng sidan Test för att återgå till arbetsytan.
Publicera och starta runbooken
Den runbook som du har skapat är fortfarande i utkastläge. Du måste publicera den innan du kan köra den i produktion. När du publicerar en runbook skriver du över den befintliga publicerade versionen med utkastversionen. I det här fallet har du ingen publicerad version ännu eftersom du precis har skapat runbook-jobbet.
Välj Publicera för att publicera runbooken och sedan Ja när du uppmanas till det.
Fältet Status visar nu Publicerad. Granska alternativen överst så att du kan starta runbooken nu, schemalägga en framtida starttid eller skapa en webhook så att runbooken kan startas via ett HTTP-anrop. Välj Starta och sedan Ja när du ombes att starta runbooken.
En jobbsida öppnas för runbook-jobbet som har skapats. I det här fallet lämnar du sidan öppen så att du kan se jobbets förlopp. Fältet Status matchar de statusar som du såg när du testade runbooken.
När runbook-statusen visar Slutförd väljer du Utdata. Utdata bör se ut ungefär som testutdata.
Stäng sidan Jobb för att återgå till runbook-översiktssidan.
Under Resurser väljer du Jobb. På den här sidan visas alla jobb som skapats av din runbook. Du bör bara se ett jobb i listan, eftersom du bara har kört jobbet en gång.
Välj jobbet för att öppna samma jobbsida som du visade när du startade runbooken. Använd den här sidan om du vill visa information om alla jobb som skapats för runbooken. Stäng sidan Jobb för att återgå till runbook-översiktssidan.
Lägga till autentisering för att hantera Azure-resurser
Du har testat och publicerat din runbook, men hittills gör den egentligen inget användbart. Du vill att den ska hantera Azure-resurser. Det kan inte göra det om den inte autentiserar med autentiseringsuppgifterna för prenumerationen. Runbooken använder Automation-kontots systemtilldelade hanterade identitet för att autentisera med Azure för att utföra hanteringsåtgärden mot den virtuella datorn. Runbooken kan enkelt ändras för att använda en användartilldelad hanterad identitet.
Välj Översikt och sedan Redigera för att öppna textredigeraren.
Ersätt den befintliga koden med följande:
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>" }
Redigera variabeln
$resourceGroup
med ett giltigt värde som representerar resursgruppen.Om du vill att runbooken ska köras med den systemtilldelade hanterade identiteten lämnar du koden som den är. Om du föredrar att använda en användartilldelad hanterad identitet:
- Från rad 9 tar du bort
Connect-AzAccount -Identity
, - Ersätt den med
Connect-AzAccount -Identity -AccountId <ClientId>
, och - Ange det klient-ID som du hämtade tidigare.
- Från rad 9 tar du bort
Välj Spara och sedan testfönstret.
Välj Starta för att starta testet. När den är klar bör du se utdata som liknar följande och visa grundläggande information från ditt konto. Den här åtgärden bekräftar att autentiseringsuppgiften är giltig.
Stäng sidan Test för att återgå till arbetsytan.
Lägga till kod för att starta en virtuell dator
Nu när din runbook autentiserar till Azure-prenumerationen kan du hantera resurser. Lägg till ett kommando för att starta en virtuell dator. Du kan välja valfri virtuell dator i din Azure-prenumeration och för tillfället hårdkodar du det namnet i runbooken.
Lägg till koden nedan som den sista raden omedelbart före den avslutande klammerparentesen. Ersätt
VMName
med det faktiska namnet på en virtuell dator.Start-AzVM -Name "VMName" -ResourceGroupName $resourceGroup -DefaultProfile $AzureContext
Testa runbooken och bekräfta att den virtuella datorn har startats. Gå sedan tillbaka till arbetsytan.
Lägga till indataparametrar i runbooken
Din runbook startar för närvarande den virtuella dator som du har hårdkodat i runbooken. Det är mer användbart om du kan ange den virtuella datorn när runbooken startas. Lägg till indataparametrar i runbooken för att tillhandahålla den funktionen.
Ersätt rad 3,
$resourceGroup = "resourceGroupName"
, med följande:Param( [string]$resourceGroup, [string]$VMName )
Ersätt föregående
Start-AzVM
kommando med följande:Start-AzVM -Name $VMName -ResourceGroupName $resourceGroup -DefaultProfile $AzureContext
Testa runbooken och bekräfta att den virtuella datorn har startats. Gå sedan tillbaka till arbetsytan.
Hantera flera virtuella datorer samtidigt
Du kan använda konstruktionen ForEach -Parallel
för att bearbeta kommandon för varje objekt i en samling samtidigt. Ändra koden så att runbooken nu:
- Acceptera en samling med namn på virtuella datorer,
- Acceptera en parameter för att stoppa eller starta de virtuella datorerna och
- Utför åtgärderna parallellt mot alla virtuella datorer
Ersätt all befintlig kod med följande:
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'." } }
Om du vill att runbooken ska köras med den systemtilldelade hanterade identiteten lämnar du koden som den är. Om du föredrar att använda en användartilldelad hanterad identitet:
- Från rad 9 tar du bort
Connect-AzAccount -Identity
, - Ersätt den med
Connect-AzAccount -Identity -AccountId <ClientId>
, och - Ange det klient-ID som du hämtade tidigare.
- Från rad 9 tar du bort
Välj Spara, sedan Publicera och sedan Ja när du uppmanas att göra det.
På sidan Översikt väljer du Start.
Fyll i parametrarna och välj sedan OK.
Parameter Description RESOURCEGROUP Ange namnet på resursgruppen för de virtuella datorerna. Virtuella datorer Ange namnen på de virtuella datorerna med hjälp av följande syntax: ["VM1","VM2","VM3"]
Åtgärd Ange stop
ellerstart
.Gå till listan över virtuella datorer och uppdatera sidan med några sekunders mellanrum. Observera att åtgärden för varje virtuell dator sker parallellt. Utan nyckelordet
-Parallel
skulle åtgärderna ha utförts sekventiellt. Även om de virtuella datorerna startar parallellt kan varje virtuell dator nå fasen Körs vid något olika tidpunkter baserat på egenskaperna för varje virtuell dator.
Rensa resurser
Om du inte kommer att fortsätta att använda den här runbooken tar du bort den med följande steg:
- Gå till ditt Automation-konto.
- Under Processautomatisering väljer du Runbooks.
- Välj runbooken.
- På sidan Översikt över runbook väljer du Ta bort.
Nästa steg
I den här självstudien skapade du en PowerShell-arbetsflödes runbook. En titt på Python 3-runbooks finns i: