Uitvoering van runbooks in Azure Automation

Met procesautomatisering in Azure Automation kunt u PowerShell, PowerShell Workflow en grafische runbooks maken en beheren. Zie runbooks Azure Automation voor meer informatie.

Automation voert uw runbooks uit op basis van de logica die erin is gedefinieerd. Als een runbook wordt onderbroken, wordt het aan het begin opnieuw opgestart. Voor dit gedrag moet u runbooks schrijven die ondersteuning bieden voor opnieuw opstarten als er tijdelijke problemen optreden.

Als u een runbook in Azure Automation, wordt er een taak gemaakt. Dit is één exemplaar van het runbook. Elke taak heeft toegang tot Azure-resources door verbinding te maken met uw Azure-abonnement. De taak heeft alleen toegang tot resources in uw datacenter als deze resources toegankelijk zijn vanuit de openbare cloud.

Azure Automation wijst een werker toe om elke taak uit te voeren tijdens het uitvoeren van het runbook. Hoewel werknemers worden gedeeld door veel Automation-accounts, worden taken uit verschillende Automation-accounts van elkaar geïsoleerd. U kunt niet bepalen welke werkwerkers uw taakaanvragen verwerken.

Wanneer u de lijst met runbooks in de Azure Portal, wordt de status weergegeven van elke taak die voor elk runbook is gestart. Azure Automation worden taaklogboeken maximaal 30 dagen op slaat.

In het volgende diagram ziet u de levenscyclus van een runbooktaak voor PowerShell-runbooks, PowerShell Workflow-runbooksen grafische runbooks.

Taakstatussen - PowerShell Workflow

Notitie

Voor meer informatie over persoonsgegevens bekijken of verwijderen, raadpleegt u AVG-verzoeken van betrokkenen voor Azure. Zie de sectie AVG van het micro soft vertrouwens centrum en de sectie AVG van de portal service Trustvoor meer informatie over AVG.

Uitvoeringsomgeving voor runbook

Runbooks in Azure Automation kunnen worden uitgevoerd op een Azure-sandbox of een Hybrid Runbook Worker.

Wanneer runbooks zijn ontworpen om te worden geverifieerd en uitgevoerd op resources in Azure, worden ze uitgevoerd in een Azure-sandbox. Azure Automation wijst een werker toe om elke taak uit te voeren tijdens het uitvoeren van het runbook in de sandbox. Hoewel werknemers worden gedeeld door veel Automation-accounts, worden taken uit verschillende Automation-accounts van elkaar geïsoleerd. Taken die dezelfde sandbox gebruiken, zijn gebonden aan de resourcebeperkingen van de sandbox. De Azure-sandboxomgeving biedt geen ondersteuning voor interactieve bewerkingen. Het voorkomt toegang tot alle out-of-process COM-servers en biedt geen ondersteuning voor het maken van WMI-aanroepen naar de Win32-provider in uw runbook. Deze scenario's worden alleen ondersteund door het runbook op een Windows Hybrid Runbook Worker.

U kunt ook een Hybrid Runbook Worker om runbooks rechtstreeks uit te voeren op de computer die als host voor de rol en voor lokale resources in de omgeving wordt gebruikt. Azure Automation slaat runbooks op en beheert ze en levert deze vervolgens aan een of meer toegewezen computers.

Als u de Azure Firewall in Azure Storage, Azure Key Vaultof Azure SQL, blokkeert u de toegang tot Azure Automation runbooks voor deze services. De toegang wordt geblokkeerd, zelfs wanneer de firewall-uitzondering om vertrouwde Microsoft-services is ingeschakeld, omdat Automation geen deel uitmaakt van de lijst met vertrouwde services. Met een ingeschakelde firewall kan toegang alleen worden gemaakt met behulp van een Hybrid Runbook Worker en een service-eindpunt voor een virtueel netwerk.

Notitie

Als u wilt uitvoeren op een Linux-Hybrid Runbook Worker, moeten uw scripts zijn ondertekend en moet de werkmedewerker dienovereenkomstig worden geconfigureerd. Handtekeningvalidatie moet ook worden uitgeschakeld.

De volgende tabel bevat een aantal runbookuitvoeringstaken met de aanbevolen uitvoeringsomgeving die voor elk runbook wordt vermeld.

Taak Aanbeveling Notities
Integreren met Azure-resources Azure Sandbox Verificatie wordt gehost in Azure en is eenvoudiger. Als u een virtuele Hybrid Runbook Worker azure-VM gebruikt, kunt u runbookverificatie gebruiken met beheerde identiteiten.
Optimale prestaties verkrijgen voor het beheren van Azure-resources Azure Sandbox Script wordt uitgevoerd in dezelfde omgeving, met minder latentie.
Operationele kosten minimaliseren Azure Sandbox Er is geen rekenoverhead en er is geen VM nodig.
Langlopende script uitvoeren Hybrid Runbook Worker Azure-sandboxes hebben resourcelimieten.
Interactie met lokale services Hybrid Runbook Worker Rechtstreeks toegang tot de hostmachine of resources in andere cloudomgevingen of de on-premises omgeving.
Software en uitvoerbare bestanden van derden vereisen Hybrid Runbook Worker U beheert het besturingssysteem en kunt software installeren.
Een bestand of map bewaken met een runbook Hybrid Runbook Worker Gebruik een Watcher-taak op een Hybrid Runbook Worker.
Een resource-intensief script uitvoeren Hybrid Runbook Worker Azure-sandboxes hebben resourcelimieten.
Modules met specifieke vereisten gebruiken Hybrid Runbook Worker Een aantal voorbeelden:
WinSCP - afhankelijkheid van winscp.exe
IIS-beheer: afhankelijkheid van het inschakelen of beheren van IIS
Een module installeren met een installatieprogramma Hybrid Runbook Worker Modules voor sandbox moeten ondersteuning bieden voor kopiëren.
Runbooks of modules gebruiken waarvoor een andere .NET Framework versie dan 4.7.2 is vereist Hybrid Runbook Worker Azure-sandboxes ondersteunen .NET Framework versie 4.7.2 en upgraden naar een andere versie wordt niet ondersteund.
Scripts uitvoeren waarvoor verhoging van bevoegdheden is vereist Hybrid Runbook Worker Sandboxes staan geen verhoging van bevoegdheden toe. Met een Hybrid Runbook Worker kunt u UAC uitschakelen en Invoke-Command gebruiken bij het uitvoeren van de opdracht die verhoging vereist.
Scripts uitvoeren waarvoor toegang tot Windows Management Instrumentation (WMI) is vereist Hybrid Runbook Worker Taken die worden uitgevoerd in sandboxes in de cloud, hebben geen toegang tot de WMI-provider.

Tijdelijke opslag in een sandbox

Als u tijdelijke bestanden moet maken als onderdeel van uw runbooklogica, kunt u de map Temp (dat wil zeggen) in de Azure-sandbox gebruiken voor runbooks die worden uitgevoerd $env:TEMP in Azure. De enige beperking is dat u niet meer dan 1 GB aan schijfruimte kunt gebruiken. Dit is het quotum voor elke sandbox. Wanneer u met PowerShell-werkstromen werkt, kan dit scenario een probleem veroorzaken omdat PowerShell-werkstromen controlepunten gebruiken en het script opnieuw kan worden proberen in een andere sandbox.

Met de hybride sandbox kunt u gebruiken op C:\temp basis van de beschikbaarheid van opslag op een Hybrid Runbook Worker. Volgens de aanbevelingen voor azure-VM's moet u de tijdelijke schijf op Windows of Linux echter niet gebruiken voor gegevens die moeten worden opgeslagen.

Resources

Uw runbooks moeten logica bevatten voor het omgaan met resources,bijvoorbeeld VM's, het netwerk en resources in het netwerk. Resources zijn gekoppeld aan een Azure-abonnement en runbooks hebben de juiste referenties nodig voor toegang tot een resource. Zie Resources verwerken voor een voorbeeld van het verwerken van resources in eenrunbook.

Beveiliging

Azure Automation maakt gebruik van Microsoft Defender for Cloud om uw resources te beveiliging te bieden en in Linux-systemen gecompromitteerd te detecteren. Er wordt beveiliging geboden voor uw workloads, ongeacht of de resources zich in Azure of niet in azure hebben. Zie Inleiding tot verificatie in Azure Automation.

Defender for Cloud legt beperkingen op aan gebruikers die scripts( ondertekend of niet-ondertekend) kunnen uitvoeren op een virtueleM. Als u een gebruiker bent met hoofdtoegang tot een virtuele machine, moet u de machine expliciet configureren met een digitale handtekening of uitschakelen. Anders kunt u alleen een script uitvoeren om updates van het besturingssysteem toe te passen nadat u een Automation-account hebt gemaakt en de juiste functie hebt inschakelen.

Abonnementen

Een Azure-abonnement is een overeenkomst met Microsoft voor het gebruik van een of meer cloudservices waarvoor u kosten in rekening wordt gebracht. Voor Azure Automation is elk abonnement gekoppeld aan een Azure Automation-account en kunt u meerdere abonnementen in het account maken.

Referenties

Voor een runbook zijn de juiste referenties vereist voor toegang tot elke resource, of dit nu voor Azure- of systemen van derden is. Deze referenties worden opgeslagen in Azure Automation, Key Vault, enzovoort.

Azure Monitor

Azure Automation maakt gebruik van Azure Monitor voor het bewaken van de machinebewerkingen. Voor de bewerkingen zijn een Log Analytics-werkruimte en een Log Analytics-agent vereist.

Log Analytics-agent voor Windows

De Log Analytics-agent voor Windows werkt met Azure Monitor om Windows en fysieke computers te beheren. De machines kunnen worden uitgevoerd in Azure of in een niet-Azure-omgeving, zoals een lokaal datacenter.

Notitie

De Log Analytics-agent voor Windows werd voorheen de MMA (Microsoft Monitoring Agent) genoemd.

Log Analytics-agent voor Linux

De Log Analytics-agent voor Linux werkt op dezelfde manier als de agent voor Windows, maar verbindt Linux-computers met Azure Monitor. De agent wordt geïnstalleerd met bepaalde serviceaccounts die opdrachten uitvoeren waarvoor hoofdmachtigingen zijn vereist. Zie Serviceaccounts voor meer informatie.

Het logboek van de Log Analytics-agent bevindt zich op /var/opt/microsoft/omsagent/log/omsagent.log .

Runbookmachtigingen

Een runbook heeft machtigingen nodig voor verificatie bij Azure, via referenties. Zie Azure Automation overzicht van verificatie.

Modules

Azure Automation bevat de volgende PowerShell-modules:

  • Orchestrator.AssetManagement.Cmdlets: bevat verschillende interne cmdlets die alleen beschikbaar zijn wanneer u runbooks uitvoert in de Azure-sandboxomgeving of op een Windows Hybrid Runbook Worker. Deze cmdlets zijn ontworpen om te worden gebruikt in plaats van Azure PowerShell om te communiceren met uw Automation-accountresources.
  • Az.Automation: de aanbevolen PowerShell-module voor interactie met Azure Automation die de AzureRM Automation-module vervangt. De Az.Automation-module wordt niet automatisch opgenomen wanneer u een Automation-account maakt en u deze handmatig moet importeren.
  • AzureRM.Automation: standaard geïnstalleerd wanneer u een Automation-account maakt.

Ook worden installeerbare modules ondersteund, op basis van de cmdlets die uw runbooks en DSC-configuraties vereisen. Zie Modules beheren in Azure Automation voor meer informatie over de modules die beschikbaar zijn voor uw runbooks en DSC-configuraties.

Certificaten

Azure Automation maakt gebruik van certificaten voor verificatie bij Azure of voegt deze toe aan Azure- of externe resources. De certificaten worden veilig opgeslagen voor toegang door runbooks en DSC-configuraties.

Uw runbooks kunnen zelf-ondertekende certificaten gebruiken die niet zijn ondertekend door een certificeringsinstantie (CA). Zie Een nieuw certificaat maken.

Taken

Azure Automation ondersteunt een omgeving om taken uit te voeren vanuit hetzelfde Automation-account. Eén runbook kan veel taken tegelijk uitvoeren. Hoe meer taken u tegelijkertijd kunt uitvoeren, hoe vaker ze naar dezelfde sandbox kunnen worden verzonden.

Taken die in hetzelfde sandboxproces worden uitgevoerd, kunnen van invloed zijn op elkaar. Een voorbeeld hiervan is het uitvoeren van de cmdlet Disconnect-AzAccount. Als deze cmdlet wordt uitgevoerd, wordt elke runbook-taak in het gedeelde sandboxproces losgekoppeld. Zie Gelijktijdige taken voorkomen voor een voorbeeld van het werken met dit scenario.

Notitie

PowerShell-taken die zijn gestart vanuit een runbook dat wordt uitgevoerd in een Azure-sandbox, worden mogelijk niet uitgevoerd in de volledige Taalmodus van PowerShell.

Taakstatussen

In de volgende tabel worden de statussen beschreven die mogelijk zijn voor een taak. U kunt een statusoverzicht weergeven voor alle runbooktaken of inzoomen op details van een specifieke runbook-taak in de Azure Portal. U kunt ook integratie met uw Log Analytics-werkruimte configureren om de runbook-taakstatus en taakstromen door te geven. Zie Taakstatus en taakstromen van Automation doorsturen naar Azure Monitor logboeken voor meer informatie over de integratie Azure Monitor logboeken. Zie ook Taakstatussen verkrijgen voor een voorbeeld van het werken met statussen in een runbook.

Status Beschrijving
Activeren De taak wordt geactiveerd.
Voltooid De taak is voltooid.
Mislukt Het compileren van een grafisch of PowerShell Workflow-runbook is mislukt. Het starten van een PowerShell-runbook is mislukt of de taak heeft een uitzondering. Zie Azure Automation runbooktypen.
Mislukt, wachten op resources De taak is mislukt omdat de limiet voor fair share drie keer is bereikt en elke keer vanaf hetzelfde controlepunt of vanaf het begin van het runbook is gestart.
In wachtrij De taak wacht tot resources op een Automation-werker beschikbaar zijn, zodat deze kan worden gestart.
Hervatten Het systeem hervat de taak nadat deze is opgeschort.
Wordt uitgevoerd De taak wordt uitgevoerd.
Actief, wachten op resources De taak is verwijderd omdat de limiet voor het delen van eerlijk delen is bereikt. Het wordt binnenkort hervat vanaf het laatste controlepunt.
Starten De taak is toegewezen aan een werker en het systeem start deze.
Gestopt De gebruiker heeft de taak gestopt voordat deze is voltooid.
Stoppen Het systeem stopt de taak.
Onderbroken Is alleen van toepassing op grafische runbooks en PowerShell Workflow-runbooks. De taak is door de gebruiker, door het systeem of door een opdracht in het runbook onderbroken. Als een runbook geen controlepunt heeft, begint het vanaf het begin. Als het een controlepunt heeft, kan het opnieuw starten en hervatten vanaf het laatste controlepunt. Het systeem schort het runbook alleen op wanneer er een uitzondering optreedt. De variabele is standaard ingesteld op Doorgaan, waarmee wordt aangegeven dat ErrorActionPreference de taak bij een fout blijft worden uitgevoerd. Als de voorkeursvariabele is ingesteld op Stoppen, wordt de taak bij een fout tijdelijk gestopt.
Onderbreken Is alleen van toepassing op grafische runbooks en PowerShell Workflow-runbooks. Het systeem probeert de taak op verzoek van de gebruiker te schorsen. Runbook moet het volgende controlepunt bereiken voordat de taak kan worden onderbroken. Als het laatste controlepunt al is geslaagd, wordt het voltooid voordat het kan worden opgeschort.

Logboekregistratie van activiteiten

Uitvoering van runbooks in Azure Automation schrijft details in een activiteitenlogboek voor het Automation-account. Zie Details ophalen uit activiteitenlogboek voor meer informatie over het gebruik van het logboek.

Uitzonderingen

In deze sectie worden enkele manieren beschreven voor het afhandelen van uitzonderingen of onregelmatige problemen in uw runbooks. Een voorbeeld is een WebSocket-uitzondering. Juiste afhandeling van uitzonderingen voorkomt dat tijdelijke netwerkfouten ervoor zorgen dat uw runbooks mislukken.

ErrorActionPreference

De variabele ErrorActionPreference bepaalt hoe PowerShell reageert op een niet-beëindigingsfout. Beëindigingsfouten worden altijd beëindigd en worden niet beïnvloed door ErrorActionPreference .

Wanneer het runbook gebruikmaakt van , wordt het runbook niet meer uitgevoerd door een normaal niet-af te ronden fout, zoals van de ErrorActionPreference PathNotFound cmdlet Get-ChildItem. In het volgende voorbeeld ziet u het gebruik van ErrorActionPreference . De laatste write-output opdracht wordt nooit uitgevoerd, omdat het script stopt.

$ErrorActionPreference = 'Stop'
Get-ChildItem -path nofile.txt
Write-Output "This message will not show"

Catch tot slot proberen

Try Catch Finally wordt gebruikt in PowerShell-scripts om beëindigingsfouten af te handelen. Het script kan dit mechanisme gebruiken om specifieke uitzonderingen of algemene uitzonderingen te ondervangen. De catch instructie moet worden gebruikt om fouten bij te houden of te verwerken. In het volgende voorbeeld wordt geprobeerd een bestand te downloaden dat niet bestaat. De uitzondering wordt System.Net.WebException vangt en retourneert de laatste waarde voor een andere uitzondering.

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."
}

Gooien

Throw kan worden gebruikt om een eindfout te genereren. Dit mechanisme kan nuttig zijn bij het definiëren van uw eigen logica in een runbook. Als het script voldoet aan een criterium dat het script moet stoppen, kan het de throw instructie gebruiken om te stoppen. In het volgende voorbeeld wordt deze instructie gebruikt om een vereiste functieparameter weer te geven.

function Get-ContosoFiles
{
  param ($path = $(throw "The Path parameter is required."))
  Get-ChildItem -Path $path\*.txt -recurse
}

Fouten

Uw runbooks moeten fouten afhandelen. Azure Automation ondersteunt twee typen PowerShell-fouten: beëindigen en niet-beëindigen.

Het beëindigen van fouten stopt de uitvoering van runbook wanneer ze optreden. Het runbook stopt met de taakstatus Mislukt.

Niet-beëindigingsfouten zorgen ervoor dat een script zelfs na het optreden kan worden voortgezet. Een voorbeeld van een niet-beëindigingsfout is een fout die zich voordoet wanneer een runbook de cmdlet gebruikt met een pad dat Get-ChildItem niet bestaat. PowerShell ziet dat het pad niet bestaat, er een fout wordt weergegeven en gaat door naar de volgende map. Met de fout wordt in dit geval de status van de runbook-taak niet ingesteld op Mislukt en is de taak mogelijk zelfs voltooid. Als u wilt forceren dat een runbook stopt bij een niet-beëindigingsfout, kunt u op ErrorAction Stop de cmdlet gebruiken.

Processen aanroepen

Runbooks die worden uitgevoerd in Azure-sandboxes bieden geen ondersteuning voor aanroepprocessen, zoals uitvoerbare bestanden (.exe bestanden) of subprocessen. De reden hiervoor is dat een Azure-sandbox een gedeeld proces is dat wordt uitgevoerd in een container die mogelijk geen toegang heeft tot alle onderliggende API's. Voor scenario's waarvoor software van derden of aanroepen naar subprocessen zijn vereist, moet u een runbook uitvoeren op een Hybrid Runbook Worker.

Apparaat- en toepassingskenmerken

Runbooktaken in Azure-sandboxes hebben geen toegang tot apparaat- of toepassingskenmerken. De meest voorkomende API die wordt gebruikt om metrische gegevens over prestaties op te vragen Windows is WMI, met enkele van de algemene metrische gegevens geheugen- en CPU-gebruik. Het maakt echter niet uit welke API wordt gebruikt, omdat taken die worden uitgevoerd in de cloud geen toegang hebben tot de Microsoft-implementatie van Web-Based Enterprise Management (WBEM). Dit platform is gebaseerd op de Common Information Model (CIM) en biedt de industriestandaarden voor het definiëren van apparaat- en toepassingskenmerken.

Webhooks

Externe services, bijvoorbeeld Azure DevOps Services en GitHub, kunnen een runbook starten in Azure Automation. Voor dit type opstarten gebruikt de service een webhook via één HTTP-aanvraag. Met het gebruik van een webhook kunnen runbooks worden gestart zonder implementatie van een Azure Automation functie.

Gedeelde resources

Om resources te delen tussen alle runbooks in de cloud, maakt Azure gebruik van een concept dat fair share wordt genoemd. Met fair share wordt een taak die langer dan drie uur is uitgevoerd, tijdelijk verwijderd of gestopt in Azure. Taken voor PowerShell-runbooks en Python-runbooks worden gestopt en niet opnieuw gestart, en de taakstatus wordt Gestopt.

Voor langlopende Azure Automation is het raadzaam om een Hybrid Runbook Worker. Hybrid Runbook Workers worden niet beperkt door een fair share en hebben geen beperking voor hoe lang een runbook kan worden uitgevoerd. De andere taaklimieten zijn van toepassing op zowel Azure-sandboxes als Hybrid Runbook Workers. Hoewel Hybrid Runbook Workers niet wordt beperkt door de limiet van drie uur voor fair share, moet u runbooks ontwikkelen die worden uitgevoerd op de werksters die ondersteuning bieden voor opnieuw opstarten vanuit onverwachte problemen met de lokale infrastructuur.

Een andere optie is om een runbook te optimaliseren met behulp van onderliggende runbooks. Uw runbook kan bijvoorbeeld op verschillende resources door dezelfde functie lopen, bijvoorbeeld met een databasebewerking op verschillende databases. U kunt deze functie verplaatsen naar een onderliggend runbook en uw runbook deze laten aanroepen met behulp van Start-AzAutomationRunbook. Onderliggende runbooks worden parallel uitgevoerd in afzonderlijke processen.

Het gebruik van onderliggende runbooks vermindert de totale tijd die nodig is om het bovenliggende runbook te voltooien. Uw runbook kan de cmdlet Get-AzAutomationJob gebruiken om de taakstatus voor een onderliggend runbook te controleren als er nog meer bewerkingen zijn nadat het onderliggende runbook is voltooid.

Volgende stappen