Esecuzione di runbook in un ruolo di lavoro ibrido per runbookRunning runbooks on a Hybrid Runbook Worker

Non esiste alcuna differenza nella struttura dei runbook che vengono eseguiti in Automazione di Azure e di quelli eseguiti in Hybrid Runbook Workers.There is no difference in the structure of runbooks that run in Azure Automation and those that run on a Hybrid Runbook Worker. I runbook usati nell'uno o nell'altro caso saranno tuttavia molto diversi perché, mentre i runbook per un ruolo di lavoro ibrido per runbook gestiscono solitamente le risorse nel computer locale o all'interno di risorse nell'ambiente locale in cui sono eseguiti, i runbook in Automazione di Azure gestiscono solitamente le risorse nel cloud Azure.Runbooks that you use with each most likely differ significantly though since runbooks targeting a Hybrid Runbook Worker typically manage resources on the local computer itself or against resources in the local environment where it is deployed, while runbooks in Azure Automation typically manage resources in the Azure cloud.

Quando si creano runbook da eseguire in un ruolo di lavoro ibrido per runbook, è opportuno modificare e testare i runbook all'interno del computer che ospita il ruolo di lavoro ibrido.When you author runbooks to run on a Hybrid Runbook Worker, you should edit and test the runbooks within the machine that hosts the Hybrid worker. Il computer host include tutti i moduli di PowerShell e i diritti di accesso di rete necessari per gestire e accedere alle risorse locali.The host machine has all of the PowerShell modules and network access you need to manage and access the local resources. Dopo che un runbook è stato modificato e testato nel computer con il ruolo di lavoro ibrido, è possibile caricarlo nell'ambiente Automazione di Azure in cui risulterà disponibile per essere eseguito nel ruolo di lavoro ibrido.Once a runbook has been edited and tested on the Hybrid worker machine, you can then upload it to the Azure Automation environment where it is available to run in the Hybrid worker. È importante sapere che se i processi vengono eseguiti con l'account di sistema locale per Windows o per un account utente speciale nxautomation su Linux, è possibile che emergano alcune piccole differenze, aspetto di cui è importante tenere conto quando si creano runbook per il ruolo di lavoro ibrido per runbook.It is important to know that jobs run under the Local System account for windows or a special user account nxautomation on Linux, which can introduce subtle differences when authoring runbooks for a Hybrid Runbook Worker this should be taken into account.

Avvio di un runbook in un ruolo di lavoro ibrido per runbookStarting a runbook on Hybrid Runbook Worker

avvio di un runbook in Automazione di Azure illustra diversi modi in cui è possibile eseguire l'avvio dei runbook.Starting a Runbook in Azure Automation describes different methods for starting a runbook. Hybrid Runbook Workers aggiunge un'opzione RunOn in cui è possibile specificare il nome di un gruppo di computer di lavoro runbook ibridi.Hybrid Runbook Worker adds a RunOn option where you can specify the name of a Hybrid Runbook Worker Group. Se si specifica un gruppo, il runbook verrà recuperato ed eseguito da uno dei computer di lavoro inclusi in tale gruppo.If a group is specified, then the runbook is retrieved and run by one of the workers in that group. Se non si specifica l'opzione, verrà eseguito come di consueto in Automazione di Azure.If this option is not specified, then it is run in Azure Automation as normal.

Quando si avvia un runbook nel portale di Azure, viene visualizzata l'opzione Esegui in, che consente di scegliere tra Azure o Ruolo di lavoro ibrido.When you start a runbook in the Azure portal, you are presented with a Run on option where you can select Azure or Hybrid Worker. Se si seleziona Computer di lavoro ibrido, sarà quindi possibile selezionare il gruppo da un elenco a discesa.If you select Hybrid Worker, then you can select the group from a dropdown.

Usare il parametro RunOn.Use the RunOn parameter. È possibile usare il comando seguente per avviare un runbook denominato Test-Runbook in un gruppo di ruoli di lavoro ibridi per runbook denominato MyHybridGroup usando Windows PowerShell.You can use the following command to start a runbook named Test-Runbook on a Hybrid Runbook Worker Group named MyHybridGroup using Windows PowerShell.

Start-AzureRmAutomationRunbook –AutomationAccountName "MyAutomationAccount" –Name "Test-Runbook" -RunOn "MyHybridGroup"

Nota

Il parametro RunOn è stato aggiunto al cmdlet Start-AzureAutomationRunbook nella versione 0.9.1 di Microsoft Azure PowerShell.The RunOn parameter was added to the Start-AzureAutomationRunbook cmdlet in version 0.9.1 of Microsoft Azure PowerShell. È consigliabile scaricare la versione più recente se la versione installata è precedente.You should download the latest version if you have an earlier one installed. È sufficiente installare questa versione nella workstation in cui si avvierà il runbook da PowerShell.You only need to install this version on a workstation where you are starting the runbook from PowerShell. Non è necessario installarla nel computer di lavoro, a meno che non si intenda avviare i runbook da tale computer.You do not need to install it on the worker computer unless you intend to start runbooks from that computer"

Autorizzazioni per i runbookRunbook permissions

I runbook eseguiti in un ruolo di lavoro ibrido per runbook non possono usare lo stesso metodo in genere usato per l'autenticazione dei runbook per le risorse di Azure, perché accedono a risorse esterne ad Azure.Runbooks running on a Hybrid Runbook Worker cannot use the same method that is typically used for runbooks authenticating to Azure resources, since they are accessing resources outside of Azure. Il runbook può fornire la propria autenticazione alle risorse locali oppure è possibile specificare un account RunAs per fornire un contesto utente per tutti i runbook.The runbook can either provide its own authentication to local resources, or you can specify a RunAs account to provide a user context for all runbooks.

Autenticazione dei runbookRunbook authentication

Per impostazione predefinita, i runbook vengono eseguiti nel contesto dell'account di sistema locale per Windows e di un account utente speciale nxautomation per Linux nel computer locale e devono quindi autenticarsi per le risorse a cui accedono.By default, runbooks run in the context of the Local System account for Windows and a special user account nxautomation for Linux on the on-premises computer, so they must provide their own authentication to resources that they access.

Nel proprio runbook è possibile usare asset di tipo Credenziali e Certificato con cmdlet che consentono di specificare le credenziali per poter eseguire l'autenticazione per risorse diverse.You can use Credential and Certificate assets in your runbook with cmdlets that allow you to specify credentials so you can authenticate to different resources. L'esempio seguente illustra una parte di un runbook che riavvia un computer.The following example shows a portion of a runbook that restarts a computer. Recupera le credenziali da un asset di tipo credenziale e il nome del computer da un asset di tipo variabile e quindi usa questi valori con il cmdlet Restart-Computer.It retrieves credentials from a credential asset and the name of the computer from a variable asset and then uses these values with the Restart-Computer cmdlet.

$Cred = Get-AzureRmAutomationCredential -ResourceGroupName "ResourceGroup01" -Name "MyCredential"
$Computer = Get-AzureRmAutomationVariable -ResourceGroupName "ResourceGroup01" -Name  "ComputerName"

Restart-Computer -ComputerName $Computer -Credential $Cred

È anche possibile usare InlineScript, che consente di eseguire blocchi di codice in un altro computer con le credenziali specificate dal parametro comune PSCredential.You can also leverage InlineScript, which allows you to run blocks of code on another computer with credentials specified by the PSCredential common parameter.

Account RunAsRunAs account

Per impostazione predefinita il ruolo di lavoro ibrido per runbook usa Sistema locale per Windows e un account utente speciale nxautomation per Linux eseguire i runbook.By default the Hybrid Runbook Worker uses Local System for Windows and a special user account nxautomation for Linux to execute runbooks. Per evitare che i runbook debbano autenticarsi per le risorse locali, è possibile specificare un account RunAs per un gruppo di ruoli di lavoro ibridi.Instead of having runbooks provide their own authentication to local resources, you can specify a RunAs account for a Hybrid worker group. Specificare un asset credenziali con accesso alle risorse locali. Tutti i runbook useranno queste credenziali durante l'esecuzione in un ruolo di lavoro ibrido per runbook nel gruppo.You specify a credential asset that has access to local resources, and all runbooks run under these credentials when running on a Hybrid Runbook Worker in the group.

Il nome utente per le credenziali deve essere in uno dei formati seguenti:The user name for the credential must be in one of the following formats:

  • dominio\nome utentedomain\username
  • username@domain
  • nome utente (per gli account locali nel computer locale)username (for accounts local to the on-premises computer)

Usare la procedura seguente per specificare un account RunAs per un gruppo di lavoro ibrido:Use the following procedure to specify a RunAs account for a Hybrid worker group:

  1. Creare un asset credenziali con accesso alle risorse locali.Create a credential asset with access to local resources.
  2. Nel portale di Azure aprire l'account di automazione.Open the Automation account in the Azure portal.
  3. Selezionare il riquadro Gruppi di ruoli di lavoro ibridi e quindi il gruppo.Select the Hybrid Worker Groups tile, and then select the group.
  4. Selezionare Tutte le impostazioni e quindi Impostazioni del gruppo di lavoro ibrido.Select All settings and then Hybrid worker group settings.
  5. Modificare Esegui come da Predefinito a Personalizzato.Change Run As from Default to Custom.
  6. Selezionare le credenziali e fare clic su Salva.Select the credential and click Save.

Account RunAs di AutomazioneAutomation Run As account

Nell'ambito del processo di compilazione automatizzato per la distribuzione di risorse in Azure, è possibile che sia necessario accedere a sistemi locali per supportare un'attività o un set di passaggi nella sequenza di distribuzione.As part of your automated build process for deploying resources in Azure, you may require access to on-premises systems to support a task or set of steps in your deployment sequence. Per supportare l'autenticazione in Azure con l'account RunAs, è necessario installare il certificato dell'account RunAs.To support authentication against Azure using the Run As account, you need to install the Run As account certificate.

Il runbook di PowerShell seguente, Export-RunAsCertificateToHybridWorker, esporta il certificato RunAs dall'account di automazione di Azure e lo scarica e lo importa nell'archivio certificati del computer locale in un ruolo di lavoro ibrido connesso allo stesso account.The following PowerShell runbook, Export-RunAsCertificateToHybridWorker, exports the Run As certificate from your Azure Automation account and downloads and imports it into the local machine certificate store on a Hybrid worker connected to the same account. Una volta completato questo passaggio, viene verificato che il ruolo di lavoro possa eseguire l'autenticazione in Azure usando l'account RunAs.Once that step is completed, it verifies the worker can successfully authenticate to Azure using the Run As account.

<#PSScriptInfo
.VERSION 1.0
.GUID 3a796b9a-623d-499d-86c8-c249f10a6986
.AUTHOR Azure Automation Team
.COMPANYNAME Microsoft
.COPYRIGHT
.TAGS Azure Automation
.LICENSEURI
.PROJECTURI
.ICONURI
.EXTERNALMODULEDEPENDENCIES
.REQUIREDSCRIPTS
.EXTERNALSCRIPTDEPENDENCIES
.RELEASENOTES
#>

<#
.SYNOPSIS
Exports the Run As certificate from an Azure Automation account to a hybrid worker in that account.

.DESCRIPTION
This runbook exports the Run As certificate from an Azure Automation account to a hybrid worker in that account.
Run this runbook in the hybrid worker where you want the certificate installed.
This allows the use of the AzureRunAsConnection to authenticate to Azure and manage Azure resources from runbooks running in the hybrid worker.

.EXAMPLE
.\Export-RunAsCertificateToHybridWorker

.NOTES
AUTHOR: Azure Automation Team
LASTEDIT: 2016.10.13
#>

# Generate the password used for this certificate
Add-Type -AssemblyName System.Web -ErrorAction SilentlyContinue | Out-Null
$Password = [System.Web.Security.Membership]::GeneratePassword(25, 10)

# Stop on errors
$ErrorActionPreference = 'stop'

# Get the management certificate that will be used to make calls into Azure Service Management resources
$RunAsCert = Get-AutomationCertificate -Name "AzureRunAsCertificate"

# location to store temporary certificate in the Automation service host
$CertPath = Join-Path $env:temp  "AzureRunAsCertificate.pfx"

# Save the certificate
$Cert = $RunAsCert.Export("pfx",$Password)
Set-Content -Value $Cert -Path $CertPath -Force -Encoding Byte | Write-Verbose

Write-Output ("Importing certificate into $env:computername local machine root store from " + $CertPath)
$SecurePassword = ConvertTo-SecureString $Password -AsPlainText -Force
Import-PfxCertificate -FilePath $CertPath -CertStoreLocation Cert:\LocalMachine\My -Password $SecurePassword -Exportable | Write-Verbose

# Test that authentication to Azure Resource Manager is working
$RunAsConnection = Get-AutomationConnection -Name "AzureRunAsConnection"

Connect-AzureRmAccount `
    -ServicePrincipal `
    -TenantId $RunAsConnection.TenantId `
    -ApplicationId $RunAsConnection.ApplicationId `
    -CertificateThumbprint $RunAsConnection.CertificateThumbprint | Write-Verbose

Set-AzureRmContext -SubscriptionId $RunAsConnection.SubscriptionID | Write-Verbose

# List automation accounts to confirm Azure Resource Manager calls are working
Get-AzureRmAutomationAccount | Select-Object AutomationAccountName

Importante

Add-AzureRmAccount è ora un alias per Connect-AzureRMAccount.Add-AzureRmAccount is now an alias for Connect-AzureRMAccount. Quando si esegue la ricerca tra gli elementi della libreria, se Connect-AzureRMAccount non viene visualizzato, è possibile usare Add-AzureRmAccount oppure aggiornare i moduli nell'account di Automazione.When searching your library items, if you do not see Connect-AzureRMAccount, you can use Add-AzureRmAccount, or you can update your modules in your Automation Account.

Salvare il runbook Export-RunAsCertificateToHybridWorker nel computer con un'estensione .ps1.Save the Export-RunAsCertificateToHybridWorker runbook to your computer with a .ps1 extension. Importarlo nell'account di Automazione e modificare il runbook, cambiando il valore della variabile $Password con quello della propria password.Import it into your Automation account and edit the runbook, changing the value of the variable $Password with your own password. Pubblicare e quindi eseguire il runbook scegliendo come destinazione il gruppo di ruoli di lavoro ibridi che esegue e autentica i runbook usando l'account RunAs.Publish and then run the runbook targeting the Hybrid Worker group that run and authenticate runbooks using the Run As account. Il flusso di processo segnala il tentativo di importare il certificato nell'archivio del computer locale e visualizza più righe a seconda del numero di account di Automazione definiti nella sottoscrizione e del fatto che l'autenticazione abbia o meno esito positivo.The job stream reports the attempt to import the certificate into the local machine store, and follows with multiple lines depending on how many Automation accounts are defined in your subscription and if authentication is successful.

Comportamento dei processiJob behavior

Nei ruoli di lavoro ibridi per runbook i processi vengono gestiti in modo leggermente diverso rispetto a come vengono eseguiti nelle sandbox di Azure.Jobs are handled slightly different on Hybrid Runbook Workers than they are when they run on Azure sandboxes. Nei ruoli di lavoro ibridi per runbook, ad esempio, non è previsto alcun limite per la durata del processo.One key difference is that there is no limit on job duration on Hybrid Runbook Workers. Esiste una limitazione a 3 ore per i runbook eseguiti nei sandbox Azure a causa dell'errore di condivisione equa.Runbooks ran in Azure sandboxes are limited to 3 hours due to fair share. Se si ha un runbook a esecuzione prolungata, è possibile che si voglia che sia resiliente a un possibile riavvio, ad esempio al riavvio del computer che ospita il ruolo di lavoro ibrido.If you have a long-running runbook you want to ensure that it is resilient to possible restart, for example if the machine that hosts the Hybrid worker reboots. In caso di riavvio del computer host con il ruolo di lavoro ibrido, qualsiasi processo di runbook in esecuzione viene riavviato dall'inizio o dall'ultimo checkpoint per i runbook del flusso di lavoro di PowerShell.If the Hybrid worker host machine reboots, then any running runbook job restarts from the beginning, or from the last checkpoint for PowerShell Workflow runbooks. Se un processo di runbook viene riavviato più di 3 volte, viene sospeso.If a runbook job is restarted more than 3 times, then it is suspended.

Risolvere problemiTroubleshoot

Se i runbook non vengono completati correttamente e il riepilogo del processo visualizza lo stato Sospeso, vedere l'articolo sulla risoluzione dei problemi relativi agli errori di esecuzione dei runbook.If your runbooks are not completing successfully and the job summary shows a status of Suspended, review the the troubleshooting guide on runbook execution failures.

Passaggi successiviNext steps