Zelfstudie: Een PowerShell Workflow-runbook maken in Automation
In deze zelfstudie wordt stap voor stap het maken van een PowerShell Workflow-runbook in Azure Automation beschreven. PowerShell Workflow-runbooks zijn tekstrunbooks op basis van Windows PowerShell Workflow. U kunt de code van het runbook maken en bewerken met de teksteditor in de Azure-portal.
Notitie
Dit artikel is alleen van toepassing op PowerShell 5.1. PowerShell 7+ versies bieden geen ondersteuning voor werkstromen en verouderde runbooks kunnen niet worden bijgewerkt. U wordt aangeraden powerShell 7.2-tekstrunbooks te gebruiken voor geavanceerde functies, zoals parallelle taakuitvoering. Meer informatie over beperkingen van PowerShell Workflow-runbooks.
In deze zelfstudie leert u het volgende:
- Een PowerShell Workflow-runbook maken
- Het runbook testen en publiceren
- De status van de runbooktaak uitvoeren en bijhouden
- Verificatie toevoegen voor het beheren van Azure-resources
- De runbookparameters bijwerken om een virtuele Azure-machine te starten
Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.
Vereisten
- Een Azure Automation-account met ten minste één door de gebruiker toegewezen beheerde identiteit. Zie Beheerde identiteit inschakelen voor meer informatie.
- Az-modules:
Az.Accounts
enAz.Compute
geïmporteerd in het Automation-account. Zie Az-modules importeren voor meer informatie. - Twee of meer virtuele Azure-machines. Omdat u deze machines stopt en start, moeten ze geen productie-VM's zijn.
- De Azure Az PowerShell-module die op uw computer is geïnstalleerd. Zie De Azure Az PowerShell-module installeren als u deze wilt installeren of upgraden.
Machtigingen toewijzen aan beheerde identiteiten
Wijs machtigingen toe aan de juiste beheerde identiteit , zodat deze een virtuele machine kan stoppen. Het runbook kan de door het Automation-account toegewezen beheerde identiteit of een door de gebruiker toegewezen beheerde identiteit gebruiken. Er worden stappen gegeven om machtigingen toe te wijzen aan elke identiteit. In de onderstaande stappen wordt Azure Portal gebruikt. Zie Azure-rollen toewijzen met behulp van Azure PowerShell als u liever PowerShell gebruikt.
Meld u aan bij het Azure Portal en navigeer naar uw Automation-account.
Selecteer Identiteit (preview) onder Accountinstellingen.
Selecteer op het tabblad Toegewezen systeem onder Machtigingen azure-roltoewijzingen om de pagina Azure-roltoewijzingen te openen.
Selecteer + Roltoewijzing toevoegen (preview) om de pagina Roltoewijzing toevoegen (preview) te openen.
Selecteer de juiste waarden.
Eigenschappen Omschrijving Bereik Bereik is een set resources waarop de roltoewijzing van toepassing is. Selecteer resourcegroep in de vervolgkeuzelijst. Abonnement Dit veld moet automatisch worden ingevuld met uw abonnement. Resourcegroep Selecteer in de vervolgkeuzelijst de resourcegroep om de identiteitsmachtigingen te geven. Role Selecteer DevTest Labs User in de vervolgkeuzelijst. Selecteer Opslaan en sluit vervolgens de pagina Azure-roltoewijzingen om terug te keren naar het tabblad Toegewezen systeem .
Selecteer het tabblad Door de gebruiker toegewezen .
Selecteer uw door de gebruiker toegewezen beheerde identiteit in de lijst om de pagina Beheerde identiteit te openen.
Noteer de client-id voor later gebruik.
Selecteer in het linkermenu Azure-roltoewijzingen en vervolgens + Roltoewijzing toevoegen (preview) om de pagina Roltoewijzing toevoegen (preview) te openen.
Selecteer de juiste waarden.
Eigenschappen Omschrijving Bereik Selecteer resourcegroep in de vervolgkeuzelijst. Abonnement Dit veld moet automatisch worden ingevuld met uw abonnement. Resourcegroep Selecteer in de vervolgkeuzelijst de resourcegroep om de identiteitsmachtigingen te geven. Role Selecteer DevTest Labs User in de vervolgkeuzelijst. Selecteer Opslaan en sluit vervolgens de pagina Azure-roltoewijzingen om terug te keren naar het tabblad Toegewezen gebruiker .
Nieuw runbook maken
Begin met het maken van een eenvoudig PowerShell Workflow-runbook. Een voordeel van Windows PowerShell-werkstromen is de mogelijkheid om een set opdrachten parallel uit te voeren in plaats van sequentieel, net als bij een typisch script.
Notitie
Met het maken van een releaserunbook heeft u een nieuwe ervaring in Azure Portal. Wanneer u de blade> Runbooks selecteert Een runbook maken, wordt een nieuwe pagina Een runbook maken geopend met toepasselijke opties.
Selecteer Runbooks op uw geopende Automation-accountpagina onder Procesautomatisering
Selecteer + Een runbook maken.
- Geef het runbook een naam. Test bijvoorbeeld.
- Selecteer PowerShell Workflow in de vervolgkeuzelijst Runbooktype.
- Selecteer 5.1 in de vervolgkeuzelijst Runtime-versie.
- Voer de toepasselijke beschrijving in.
- Selecteer Maken.
Code toevoegen aan het runbook
U kunt de code rechtstreeks in het runbook typen of u kunt cmdlets, runbooks en assets selecteren in het besturingselement Bibliotheek en deze toevoegen aan het runbook met eventuele gerelateerde parameters. In deze zelfstudie typt u de code rechtstreeks in het runbook.
Uw runbook is momenteel leeg met alleen het vereiste workflow
-trefwoord, de naam van het runbook en de accolades die de volledige werkstroom omsluiten.
workflow MyFirstRunbook-Workflow
{
}
U kunt het
Parallel
trefwoord gebruiken om een scriptblok te maken met meerdere opdrachten die gelijktijdig worden uitgevoerd. Voer de volgende code tussen de accolades in: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
Sla het runbook op door Opslaan te selecteren.
Het runbook testen
Voordat u het runbook publiceert om het beschikbaar te maken in productie, moet u het testen om er zeker van te zijn dat het goed werkt. Wanneer u een runbook test, wordt de conceptversie uitgevoerd en kunt u de uitvoer interactief bekijken.
Selecteer het testvenster om de pagina Test te openen.
Selecteer Start om de test te starten. Er wordt een runbooktaak gemaakt en de status ervan wordt weergegeven in het deelvenster.
In eerste instantie is de taakstatus 'In de wachtrij geplaatst'. Hiermee wordt aangegeven dat de taak wacht op tot er een runbook worker in de cloud beschikbaar is. De status verandert naar 'Wordt gestart' wanneer de taak wordt geclaimd door een worker. Ten slotte verandert de status naar 'Wordt uitgevoerd' wanneer de runbook daadwerkelijk wordt uitgevoerd.
Wanneer de runbooktaak is voltooid, wordt de uitvoer weergegeven op de pagina Testen . De uitvoer moet er ongeveer uitzien als in de volgende afbeelding:
Controleer de uitvoer. Alles in het
Parallel
blok, inclusief deStart-Sleep
opdracht, wordt tegelijkertijd uitgevoerd. Dezelfde opdrachten buiten hetParallel
blok werden opeenvolgend uitgevoerd, zoals wordt weergegeven door de verschillende datum/tijdstempels.Sluit de pagina Testen om terug te keren naar het canvas.
Het runbook publiceren en starten
De runbook die u hebt gemaakt, bevindt zich nog steeds in de modus Concept. U moet het publiceren voordat u het in productie kunt uitvoeren. Wanneer u een runbook publiceert, overschrijft u de bestaande gepubliceerde versie met de conceptversie. In dit geval hebt u nog geen gepubliceerde versie omdat het runbook zojuist is gemaakt.
Selecteer Publiceren om het runbook te publiceren en vervolgens Ja wanneer hierom wordt gevraagd.
In het veld Status wordt nu Gepubliceerd weergegeven. Bekijk de opties bovenaan waarmee u het runbook nu kunt starten, een toekomstige begintijd kunt plannen of een webhook kunt maken, zodat het runbook kan worden gestart via een HTTP-aanroep. Selecteer Starten en vervolgens Ja wanneer gevraagd wordt om het runbook te starten.
Er wordt een taakpagina geopend voor de runbooktaak die is gemaakt. Laat in dit geval de pagina open zodat u de voortgang van de taak kunt bekijken. Het veld Status komt overeen met de statussen die u hebt gezien bij het testen van het runbook.
Zodra voor het runbook de status Voltooid wordt weergegeven, klikt u op Uitvoer. De uitvoer moet er ongeveer uitzien als de testuitvoer.
Sluit de pagina Taak om terug te keren naar de overzichtspagina van runbook.
Selecteer Onder Resources de optie Taken. Op deze pagina worden alle taken weergegeven die door uw runbook zijn gemaakt. U zou slechts één taak moeten zien, aangezien u de taak slechts eenmaal hebt uitgevoerd.
Selecteer de taak om dezelfde taakpagina te openen die u hebt bekeken toen u het runbook startte. Op deze pagina kunt u de details bekijken van een taak die voor het runbook is gemaakt. Sluit de pagina Taak om terug te keren naar de overzichtspagina van runbook.
Verificatie toevoegen voor het beheren van Azure-resources
U hebt het runbook getest en gepubliceerd, maar tot nu toe doet het nog niets nuttigs. U wilt dat er Azure-resources mee worden beheerd. Dat gaat niet zonder verificatie met de referenties voor het abonnement. Het runbook maakt gebruik van de door het systeem toegewezen beheerde identiteit van het Automation-account om te verifiëren met Azure om de beheeractie uit te voeren op de VIRTUELE machine. Het runbook kan eenvoudig worden gewijzigd om een door de gebruiker toegewezen beheerde identiteit te gebruiken.
Selecteer Overzicht en vervolgens Bewerken om de teksteditor te openen.
Vervang de bestaande code door het volgende:
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>" }
Bewerk de
$resourceGroup
variabele met een geldige waarde die uw resourcegroep vertegenwoordigt.Als u wilt dat het runbook wordt uitgevoerd met de door het systeem toegewezen beheerde identiteit, laat u de code staan. Als u liever een door de gebruiker toegewezen beheerde identiteit gebruikt, gaat u als volgende te werk:
- Uit regel 9, verwijder
Connect-AzAccount -Identity
, - Vervang het door
Connect-AzAccount -Identity -AccountId <ClientId>
, en - Voer de client-id in die u eerder hebt verkregen.
- Uit regel 9, verwijder
Selecteer Opslaan en vervolgens het deelvenster Testen.
Selecteer Start om de test te starten. Zodra deze is voltooid, ziet u uitvoer zoals hieronder afgebeeld, met basisinformatie van uw account. Deze actie bevestigt dat de referentie geldig is.
Sluit de pagina Testen om terug te keren naar het canvas.
Code toevoegen om een virtuele machine te starten
Nu uw runbook verifieert voor het Azure-abonnement, kunt u resources beheren. Voeg een opdracht toe om een virtuele machine te starten. U kunt elke VM in uw Azure-abonnement selecteren. Voorlopig hardcodeert u de naam hiervan in het runbook.
Voeg de onderstaande code toe als laatste regel direct vóór de afsluitende accolade. Vervang door
VMName
de werkelijke naam van een virtuele machine.Start-AzVM -Name "VMName" -ResourceGroupName $resourceGroup -DefaultProfile $AzureContext
Test het runbook en controleer of de VIRTUELE machine is gestart. Ga vervolgens terug naar het canvas.
Invoerparameters toevoegen aan het runbook
Uw runbook start momenteel de VIRTUELE machine die u in het runbook hebt vastgelegd. Het is handiger om de VM op te geven wanneer het runbook wordt gestart. Voeg invoerparameters toe aan het runbook om die functionaliteit te bieden.
Vervang regel 3 door
$resourceGroup = "resourceGroupName"
het volgende:Param( [string]$resourceGroup, [string]$VMName )
Vervang de vorige
Start-AzVM
opdracht door het volgende:Start-AzVM -Name $VMName -ResourceGroupName $resourceGroup -DefaultProfile $AzureContext
Test het runbook en controleer of de VIRTUELE machine is gestart. Ga vervolgens terug naar het canvas.
Meerdere VM's tegelijk beheren
U kunt de ForEach -Parallel
constructie gebruiken om opdrachten voor elk item in een verzameling gelijktijdig te verwerken. Pas de code aan zodat het runbook nu het volgende doet:
- Accepteer een verzameling namen van virtuele machines,
- Accepteer een parameter om de virtuele machines te stoppen of te starten, en
- De acties parallel uitvoeren op alle virtuele machines
Vervang alle bestaande code door het volgende:
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'." } }
Als u wilt dat het runbook wordt uitgevoerd met de door het systeem toegewezen beheerde identiteit, laat u de code staan. Als u liever een door de gebruiker toegewezen beheerde identiteit gebruikt, gaat u als volgende te werk:
- Uit regel 9, verwijder
Connect-AzAccount -Identity
, - Vervang het door
Connect-AzAccount -Identity -AccountId <ClientId>
, en - Voer de client-id in die u eerder hebt verkregen.
- Uit regel 9, verwijder
Selecteer Opslaan, vervolgens Publiceren en vervolgens Ja wanneer hierom wordt gevraagd.
Selecteer Start op de pagina Overzicht.
Vul de parameters in en selecteer VERVOLGENS OK.
Parameter Description RESOURCEGROUP Voer de naam in van de resourcegroep van de VM's. VM's Voer de namen van de virtuele machines in met behulp van de volgende syntaxis: ["VM1","VM2","VM3"]
Actie Enter stop
ofstart
.Navigeer om de paar seconden naar uw lijst met virtuele machines en vernieuw de pagina. U ziet dat de actie voor elke virtuele machine parallel plaatsvindt. Zonder het
-Parallel
trefwoord zouden de acties opeenvolgend zijn uitgevoerd. Hoewel de VM's parallel worden gestart, kan elke VM de actieve fase op iets verschillende tijdstippen bereiken op basis van de kenmerken van elke VIRTUELE machine.
Resources opschonen
Als u dit runbook niet meer gaat gebruiken, verwijdert u het met de volgende stappen:
- Navigeer naar uw Automation-account.
- Selecteer onder Procesautomatisering de optie Runbooks.
- Selecteer het runbook.
- Selecteer Verwijderen op de overzichtspagina van het runbook.
Volgende stappen
In deze zelfstudie hebt u een PowerShell-werkstroomrunbook gemaakt. Zie voor meer informatie over Python 3-runbooks: