Runbook-körning i Azure Automation
Med processautomatisering i Azure Automation kan du skapa och hantera PowerShell, PowerShell-arbetsflöden och grafiska runbooks. Mer information finns i Azure Automation-runbooks.
Automation kör dina runbooks utifrån den logik som har definierats i dem. Om en runbook avbryts startas den om i början. Det här beteendet kräver att du skriver runbooks som stöder omstart om tillfälliga problem uppstår.
När du startar en runbook i Azure Automation skapas ett jobb, vilket är en enda körningsinstans av runbooken. Varje jobb får åtkomst till Azure-resurser genom att upprätta en anslutning till din Azure-prenumeration. Jobbet kan bara komma åt resurser i ditt datacenter om dessa resurser är tillgängliga från det offentliga molnet.
Azure Automation tilldelar en arbetare att köra varje jobb under runbook-körningen. Medan arbetare delas av många Automation-konton isoleras jobb från olika Automation-konton från varandra. Du kan inte styra vilka arbetstjänster som dina jobbbegäranden ska ha.
När du visar listan över runbooks i Azure Portal visas status för varje jobb som har startats för varje runbook. Azure Automation lagrar jobbloggar i högst 30 dagar.
Följande diagram visar livscykeln för ett Runbook-jobb för PowerShell-runbooks, PowerShell Workflow-runbooks och grafiska runbooks.
Kommentar
Information om hur du visar eller tar bort personliga data finns i Allmänna begäranden från datasubjekt för GDPR, Azure-datasubjektbegäranden för GDPR eller Begäranden från Windows-datasubjekt för GDPR, beroende på ditt specifika område och behov. Mer information om GDPR finns i avsnittet GDPR i Microsoft Trust Center och GDPR-avsnittet i Service Trust-portalen.
Runbook-körningsmiljö
Runbooks i Azure Automation kan köras på antingen en Azure-sandbox-miljö eller en Hybrid Runbook Worker.
När runbooks är utformade för att autentisera och köra mot resurser i Azure körs de i en Azure-sandbox-miljö. Azure Automation tilldelar en arbetare att köra varje jobb under Runbook-körningen i sandbox-miljön. Medan arbetare delas av många Automation-konton isoleras jobb från olika Automation-konton från varandra. Jobb som använder samma sandbox-miljö är bundna av resursbegränsningarna i sandbox-miljön. Sandbox-miljön i Azure stöder inte interaktiva åtgärder. Det förhindrar åtkomst till alla COM-servrar som inte är processer och stöder inte WMI-anrop till Win32-providern i din runbook. Dessa scenarier stöds bara genom att köra runbooken på en Windows Hybrid Runbook Worker.
Du kan också använda en Hybrid Runbook Worker för att köra runbooks direkt på datorn som är värd för rollen och mot lokala resurser i miljön. Azure Automation lagrar och hanterar runbooks och levererar dem sedan till en eller flera tilldelade datorer.
Om du aktiverar Azure Firewall i Azure Storage, Azure Key Vault eller Azure SQL blockeras åtkomst från Azure Automation-runbooks för dessa tjänster. Åtkomst blockeras även när brandväggsfelet för att tillåta betrodda Microsoft-tjänster är aktiverat, eftersom Automation inte ingår i listan över betrodda tjänster. Med en aktiverad brandvägg kan åtkomst endast göras med hjälp av en Hybrid Runbook Worker och en tjänstslutpunkt för virtuellt nätverk.
Kommentar
- Om du vill köra på en Linux Hybrid Runbook Worker måste skripten signeras och arbetaren konfigureras därefter. Alternativt måste signaturverifiering inaktiveras.
- Runbook-körningen bör inte vara beroende av tidszonen för sandbox-miljön.
I följande tabell visas några runbook-körningsuppgifter med den rekommenderade körningsmiljön som anges för var och en.
Uppgift | Rekommendation | Kommentar |
---|---|---|
Integrera med Azure-resurser | Azure Sandbox | Autentiseringen är enklare som värd i Azure. Om du använder en Hybrid Runbook Worker på en virtuell Azure-dator kan du använda runbook-autentisering med hanterade identiteter. |
Få optimala prestanda för att hantera Azure-resurser | Azure Sandbox | Skript körs i samma miljö, vilket ger mindre svarstid. |
Minimera driftskostnaderna | Azure Sandbox | Det finns inga beräkningskostnader och inget behov av en virtuell dator. |
Kör tidskrävande skript | Hybrid Runbook Worker | Azure-sandbox-miljön har resursgränser. |
Interagera med lokala tjänster | Hybrid Runbook Worker | Få direkt åtkomst till värddatorn eller resurser i andra molnmiljöer eller den lokala miljön. |
Kräv programvara från tredje part och körbara filer | Hybrid Runbook Worker | Du hanterar operativsystemet och kan installera programvara. |
Övervaka en fil eller mapp med en runbook | Hybrid Runbook Worker | Använd en Watcher-uppgift på en Hybrid Runbook Worker. |
Kör ett resursintensivt skript | Hybrid Runbook Worker | Azure-sandbox-miljön har resursgränser. |
Använd moduler med specifika krav | Hybrid Runbook Worker | Några exempel är: WinSCP – beroende av winscp.exe IIS-administration – beroende av att aktivera eller hantera IIS |
Installera en modul med ett installationsprogram | Hybrid Runbook Worker | Moduler för sandbox-miljö måste ha stöd för kopiering. |
Använd runbooks eller moduler som kräver en annan .NET Framework-version än 4.7.2 | Hybrid Runbook Worker | Azure-sandbox-miljöer stöder .NET Framework 4.7.2 och uppgradering till en annan version stöds inte. |
Kör skript som kräver utökade privilegier | Hybrid Runbook Worker | Sandbox-miljöer tillåter inte utökade privilegier. Med en Hybrid Runbook Worker kan du inaktivera UAC och använda Invoke-Command när du kör kommandot som kräver utökade privilegier. |
Kör skript som kräver åtkomst till Windows Management Instrumentation (WMI) | Hybrid Runbook Worker | Jobb som körs i sandbox-miljöer i molnet kan inte komma åt WMI-providern. |
Tillfällig lagring i en sandbox-miljö
Om du behöver skapa temporära filer som en del av runbook-logiken kan du använda temp-mappen (dvs $env:TEMP
. ) i Azure-sandbox-miljön för runbooks som körs i Azure. Den enda begränsningen är att du inte kan använda mer än 1 GB diskutrymme, vilket är kvoten för varje sandbox-miljö. När du arbetar med PowerShell-arbetsflöden kan det här scenariot orsaka ett problem eftersom PowerShell-arbetsflöden använder kontrollpunkter och skriptet kan göras om i en annan sandbox-miljö.
Med hybridsandboxen kan du använda C:\temp
baserat på tillgängligheten för lagring på en Hybrid Runbook Worker. Men enligt rekommendationer för virtuella Azure-datorer bör du inte använda den tillfälliga disken i Windows eller Linux för data som behöver sparas.
Resurser
Dina runbooks måste innehålla logik för att hantera resurser, till exempel virtuella datorer, nätverket och resurser i nätverket. Resurser är knutna till en Azure-prenumeration och runbooks kräver lämpliga autentiseringsuppgifter för att få åtkomst till alla resurser. Ett exempel på hur du hanterar resurser i en runbook finns i Hantera resurser.
Säkerhet
Azure Automation använder Microsoft Defender för molnet för att tillhandahålla säkerhet för dina resurser och identifiera kompromisser i Linux-system. Säkerhet tillhandahålls för dina arbetsbelastningar, oavsett om resurserna finns i Azure eller inte. Se Introduktion till autentisering i Azure Automation.
Defender för molnet begränsar användare som kan köra skript, antingen signerade eller osignerade, på en virtuell dator. Om du är en användare med rotåtkomst till en virtuell dator måste du uttryckligen konfigurera datorn med en digital signatur eller inaktivera den. Annars kan du bara köra ett skript för att tillämpa operativsystemuppdateringar när du har skapat ett Automation-konto och aktiverat rätt funktion.
Prenumerationer
En Azure-prenumeration är ett avtal med Microsoft om att använda en eller flera molnbaserade tjänster som du debiteras för. För Azure Automation är varje prenumeration länkad till ett Azure Automation-konto och du kan skapa flera prenumerationer i kontot.
Merit
En runbook kräver lämpliga autentiseringsuppgifter för att få åtkomst till alla resurser, oavsett om det gäller Azure- eller tredjepartssystem. Dessa autentiseringsuppgifter lagras i Azure Automation, Key Vault osv.
Azure Monitor
Azure Automation använder Azure Monitor för att övervaka sina datoråtgärder. Åtgärderna kräver en Log Analytics-arbetsyta och en Log Analytics-agent.
Log Analytics-agent för Windows
Log Analytics-agenten för Windows fungerar med Azure Monitor för att hantera virtuella Windows-datorer och fysiska datorer. Datorerna kan köras antingen i Azure eller i en icke-Azure-miljö, till exempel ett lokalt datacenter.
Kommentar
Log Analytics-agenten för Windows kallades tidigare Microsoft Monitoring Agent (MMA).
Log Analytics-agent för Linux
Log Analytics-agenten för Linux fungerar på samma sätt som agenten för Windows, men ansluter Linux-datorer till Azure Monitor. Agenten installeras med vissa tjänstkonton som kör kommandon som kräver rotbehörigheter. Mer information finns i Tjänstkonton.
Log Analytics-agentloggen finns på /var/opt/microsoft/omsagent/log/omsagent.log
.
Runbook-behörigheter
En runbook behöver behörigheter för autentisering till Azure via autentiseringsuppgifter. Se Översikt över Azure Automation-autentisering.
Moduler
Azure Automation innehåller följande PowerShell-moduler:
- Orchestrator.AssetManagement.Cmdlets – innehåller flera interna cmdletar som bara är tillgängliga när du kör runbooks i Azure-sandbox-miljön eller på en Windows Hybrid Runbook Worker. Dessa cmdletar är utformade för att användas i stället för Azure PowerShell cmdletar för att interagera med dina kontoresurser för Automation.
- Az.Automation – den rekommenderade PowerShell-modulen för interaktion med Azure Automation som ersätter AzureRM Automation-modulen. Modulen Az.Automation ingår inte automatiskt när du skapar ett Automation-konto och du behöver importera dem manuellt.
- AzureRM.Automation – installeras som standard när du skapar ett Automation-konto.
Det stöds också installerbara moduler, baserat på de cmdletar som dina runbooks och DSC-konfigurationer kräver. Mer information om de moduler som är tillgängliga för dina runbooks och DSC-konfigurationer finns i Hantera moduler i Azure Automation.
Certifikat
Azure Automation använder certifikat för autentisering i Azure eller lägger till dem i Azure- eller tredjepartsresurser. Certifikaten lagras på ett säkert sätt för åtkomst via runbooks och DSC-konfigurationer.
Dina runbooks kan använda självsignerade certifikat, som inte är signerade av en certifikatutfärdare (CA). Läs mer i Skapa ett nytt certifikat.
Projekt
Azure Automation stöder en miljö för att köra jobb från samma Automation-konto. En enda runbook kan ha många jobb som körs samtidigt. Ju fler jobb du kör samtidigt, desto oftare kan de skickas till samma sandbox-miljö. Högst 10 jobb kan köras i en sandbox-miljö. En sandbox-miljö tas bort när inga jobb körs i den. Därför bör den inte användas för att spara filer.
Jobb som körs i samma sandbox-process kan påverka varandra. Ett exempel är att köra cmdleten Disconnect-AzAccount . Körningen av den här cmdleten kopplar från varje runbook-jobb i den delade sandbox-processen. Ett exempel på hur du arbetar med det här scenariot finns i Förhindra samtidiga jobb.
Kommentar
PowerShell-jobb som startats från en runbook som körs i en Azure-sandbox-miljö kanske inte körs i fullständigt PowerShell-språkläge.
Jobbstatusar
I följande tabell beskrivs de statusar som är möjliga för ett jobb. Du kan visa en statussammanfattning för alla runbook-jobb eller granska information om ett visst runbook-jobb i Azure-portalen. Du kan också konfigurera integrering med Log Analytics-arbetsytan för att vidarebefordra runbook-jobbstatus och jobbströmmar. Mer information om integrering med Azure Monitor-loggar finns i Vidarebefordra jobbstatus och jobbströmmar från Automation till Azure Monitor-loggar. Se även Hämta jobbstatusar för ett exempel på hur du arbetar med statusar i en runbook.
Status | beskrivning |
---|---|
Aktiverar | Jobbet aktiveras. |
Slutförd | Jobbet slutfört framgångsrikt. |
Misslyckad | En grafisk eller PowerShell Workflow runbook kunde inte kompileras. En PowerShell runbook kunde inte startas eller jobbet hade ett undantag. Se Azure Automation-runbooktyper. |
Misslyckades, väntar på resurser | Jobbet misslyckades eftersom det nådde gränsen för rättvis resurs tre gånger och startade från samma kontrollpunkt eller från början av runbooken varje gång. |
I kö | Jobbet väntar på att resurser på en Automation-arbetare ska bli tillgängliga så att det kan startas. |
Återupptar | Systemet återupptar jobbet efter att det pausats. |
Körs | Jobbet körs. |
Kör, väntar på resurser | Jobbet har tagits bort eftersom det nådde gränsen för rättvis andel. Det återupptas strax från den sista kontrollpunkten. |
Startar | Jobbet har tilldelats en arbetare och systemet startar det. |
Stoppat | Jobbet stoppades av användaren innan det slutfördes. |
Stoppas | Systemet stoppar jobbet. |
Inaktiverad | Gäller endast för grafiska runbooks och PowerShell-arbetsflödesrunbooks . Jobbet avbröts av användaren, av systemet eller av ett kommando i runbooken. Om en runbook inte har någon kontrollpunkt börjar den från början. Om den har en kontrollpunkt kan den startas igen och återupptas från den senaste kontrollpunkten. Systemet pausar bara runbooken när ett undantag inträffar. Som standard är variabeln ErrorActionPreference inställd på Fortsätt, vilket indikerar att jobbet fortsätter att köras på ett fel. Om inställningsvariabeln är inställd på Stoppa, pausas jobbet vid ett fel. |
Avbryter | Gäller endast för grafiska runbooks och PowerShell-arbetsflödesrunbooks . Systemet försöker pausa jobbet på begäran av användaren. Runbooken måste nå nästa kontrollpunkt innan den kan pausas. Om den redan har passerat sin sista kontrollpunkt slutförs den innan den kan pausas. |
Nytt | Jobbet har skickats nyligen men har ännu inte aktiverats. |
Aktivitetsloggning
Vid körning av runbooks i Azure Automation skrivs information till en aktivitetslogg för Automation-kontot. Mer information om hur du använder loggen finns i Hämta information från aktivitetsloggen.
Undantag
I det här avsnittet beskrivs några sätt att hantera undantag eller tillfälliga problem i dina runbooks. Ett exempel är ett WebSocket-undantag. Korrekt undantagshantering förhindrar att tillfälliga nätverksfel gör att dina runbooks misslyckas.
ErrorActionPreference
Variabeln ErrorActionPreference avgör hur PowerShell svarar på ett fel som inte avslutas. Avslutande fel avslutas alltid och påverkas inte av ErrorActionPreference
.
När runbooken använder ErrorActionPreference
hindrar ett normalt icke-avslutande fel, till exempel PathNotFound
från cmdleten Get-ChildItem , runbooken från att slutföras. I följande exempel visas användningen av ErrorActionPreference
. Det slutliga kommandot Write-Output körs aldrig när skriptet stoppas.
$ErrorActionPreference = 'Stop'
Get-ChildItem -path nofile.txt
Write-Output "This message will not show"
Prova att fånga äntligen
Prova Catch Finally används i PowerShell-skript för att hantera avslutande fel. Skriptet kan använda den här mekanismen för att fånga specifika undantag eller allmänna undantag. -instruktionen catch
ska användas för att spåra eller försöka hantera fel. I följande exempel försöker du ladda ned en fil som inte finns. Det fångar undantaget System.Net.WebException
och returnerar det sista värdet för andra undantag.
try
{
$wc = new-object System.Net.WebClient
$wc.DownloadFile("http://www.contoso.com/MyDoc.doc")
}
catch [System.Net.WebException]
{
"Unable to download MyDoc.doc from http://www.contoso.com."
}
catch
{
"An error occurred that could not be resolved."
}
Kasta
Throw kan användas för att generera ett avslutande fel. Den här mekanismen kan vara användbar när du definierar din egen logik i en runbook. Om skriptet uppfyller ett villkor som ska stoppa det kan det använda -instruktionen throw
för att stoppa. I följande exempel används den här instruktionen för att visa en obligatorisk funktionsparameter.
function Get-ContosoFiles
{
param ($path = $(throw "The Path parameter is required."))
Get-ChildItem -Path $path\*.txt -recurse
}
Fel
Dina runbooks måste hantera fel. Azure Automation stöder två typer av PowerShell-fel, avslutande och icke-avslutande.
Avslutande fel stoppar Runbook-körningen när de inträffar. Runbooken slutar med jobbstatusen Misslyckades.
Icke-avslutande fel gör att ett skript kan fortsätta även efter att de har inträffat. Ett exempel på ett icke-avslutande fel är ett som inträffar när en runbook använder cmdleten Get-ChildItem
med en sökväg som inte finns. PowerShell ser att sökvägen inte finns, utlöser ett fel och fortsätter till nästa mapp. Felet i det här fallet anger inte runbook-jobbstatusen till Misslyckades och jobbet kan till och med slutföras. Om du vill tvinga en runbook att stoppa ett fel som inte avslutas kan du använda ErrorAction Stop
på cmdleten.
Samtalsprocesser
Runbooks som körs i Azure-sandbox-miljöer stöder inte samtalsprocesser, till exempel körbara filer (.exe filer) eller underprocesser. Anledningen till detta är att en Azure-sandbox-miljö är en delad process som körs i en container som kanske inte kan komma åt alla underliggande API:er. För scenarier som kräver programvara från tredje part eller anrop till underprocesser bör du köra en runbook på en Hybrid Runbook Worker.
Enhets- och programegenskaper
Runbook-jobb i Azure-sandbox-miljö kan inte komma åt några enhets- eller programegenskaper. Det vanligaste API:et som används för att fråga efter prestandamått i Windows är WMI, där några av de vanliga måtten är minnes- och CPU-användning. Det spelar dock ingen roll vilket API som används eftersom jobb som körs i molnet inte kan komma åt Microsoft-implementeringen av Web-Based Enterprise Management (WBEM). Den här plattformen bygger på Common Information Model (CIM), som tillhandahåller branschstandarder för att definiera enhets- och programegenskaper.
Webhook
Externa tjänster, till exempel Azure DevOps Services och GitHub, kan starta en runbook i Azure Automation. För att göra den här typen av start använder tjänsten en webhook via en enda HTTP-begäran. Med en webhook kan runbooks startas utan implementering av en fullständig Azure Automation-funktion.
Delade resurser
För att dela resurser mellan alla runbooks i molnet använder Azure ett koncept som kallas rättvis resurs. Med rättvis resurs tar Azure tillfälligt bort eller stoppar alla jobb som har körts i mer än tre timmar. Jobb för PowerShell-runbooks och Python-runbooks stoppas och startas inte om och jobbstatusen stoppas.
För långvariga Azure Automation-uppgifter rekommenderar vi att du använder en Hybrid Runbook Worker. Hybrid Runbook Workers begränsas inte av en rättvis resurs och har ingen begränsning för hur länge en runbook kan köras. De andra jobbgränserna gäller för både Azure-sandbox-miljö och Hybrid Runbook Workers. Även om Hybrid Runbook Workers inte begränsas av gränsen på tre timmars rättvis resurs bör du utveckla runbooks för att köras på de arbetare som stöder omstarter från oväntade problem med lokal infrastruktur.
Ett annat alternativ är att optimera en runbook med hjälp av underordnade runbooks. Din runbook kan till exempel gå igenom samma funktion på flera resurser, till exempel med en databasåtgärd på flera databaser. Du kan flytta den här funktionen till en underordnad runbook och låta din runbook anropa den med Start-AzAutomationRunbook. Underordnade runbooks körs parallellt i separata processer.
Om du använder underordnade runbooks minskar den totala tiden för den överordnade runbooken att slutföras. Din runbook kan använda cmdleten Get-AzAutomationJob för att kontrollera jobbstatusen för en underordnad runbook om den fortfarande har fler åtgärder när det underordnade objektet har slutförts.
Nästa steg
- Information om hur du kommer igång med en PowerShell-runbook finns i Självstudie: Skapa en PowerShell-runbook.
- Information om hur du arbetar med runbooks finns i Hantera runbooks i Azure Automation.
- Mer information om PowerShell finns i PowerShell Docs.
- En PowerShell-cmdlet-referens finns i Az.Automation.