Aggiunta di risorse di automazione di Azure a una soluzione di gestione OMS (anteprima)Adding Azure Automation resources to an OMS management solution (Preview)

Nota

Questa è una documentazione preliminare per la creazione di soluzioni di gestione in OMS attualmente disponibili in versione di anteprima.This is preliminary documentation for creating management solutions in OMS which are currently in preview. Qualsiasi schema descritto di seguito è soggetto a modifiche.Any schema described below is subject to change.

Le soluzioni di gestione in OMS contengono in genere runbook in Automazione di Azure per automatizzare i processi, ad esempio la raccolta e l'elaborazione dei dati di monitoraggio.Management solutions in OMS will typically include runbooks in Azure Automation to automate processes such as collecting and processing monitoring data. Oltre ai runbook, gli account di Automazione includono asset come le variabili e le pianificazioni che supportano i runbook usati nella soluzione.In addition to runbooks, Automation accounts includes assets such as variables and schedules that support the runbooks used in the solution. Questo articolo descrive come includere i runbook e le risorse correlate in una soluzione.This article describes how to include runbooks and their related resources in a solution.

Nota

Gli esempi in questo articolo usano parametri e variabili che sono richiesti o comuni nelle soluzioni di gestione e che sono descritti in Creazione di soluzioni di gestione in Operations Management Suite (OMS)The samples in this article use parameters and variables that are either required or common to management solutions and described in Creating management solutions in Operations Management Suite (OMS)

PrerequisitiPrerequisites

Nell'articolo si presuppone che il lettore abbia già familiarità con le informazioni seguenti:This article assumes that you're already familiar with the following information.

Account di AutomazioneAutomation account

Tutte le risorse di Automazione di Azure sono contenute in un account di Automazione.All resources in Azure Automation are contained in an Automation account. Come descritto in Area di lavoro OMS e account di Automazione, l'account di Automazione non è incluso nella soluzione di gestione, ma deve essere presente prima dell'installazione della soluzione.As described in OMS workspace and Automation account the Automation account isn't included in the management solution but must exist before the solution is installed. Se non è disponibile, l'installazione della soluzione non riuscirà.If it isn't available, then the solution install will fail.

Il nome di ogni risorsa di automazione include il nome del rispettivo account di automazione.The name of each Automation resource includes the name of its Automation account. Questa operazione viene eseguita nella soluzione con il parametro accountName come nell'esempio seguente di una risorsa runbook.This is done in the solution with the accountName parameter as in the following example of a runbook resource.

"name": "[concat(parameters('accountName'), '/MyRunbook'))]"

RunbookRunbooks

È consigliabile includere nel file di soluzione eventuali runbook usati dalla soluzione, in modo che vengano creati nel momento in cui viene installata la soluzione.You should include any runbooks used by the solution in the solution file so that they're created when the solution is installed. Non è possibile, tuttavia, contenere il corpo del runbook nel modello ed è quindi necessario pubblicare il runbook in una posizione pubblica a cui può accedere qualsiasi utente che installa la soluzione.You cannot contain the body of the runbook in the template though, so you should publish the runbook to a public location where it can be accessed by any user installing your solution.

Le risorse runbook di automazione di Azure sono di tipo Microsoft.Automation/automationAccounts/runbooks e presentano la struttura seguente.Azure Automation runbook resources have a type of Microsoft.Automation/automationAccounts/runbooks and have the following structure. Nella struttura sono inclusi parametri e variabili comuni ed è quindi possibile copiare e incollare questo frammento di codice nel file della soluzione e, se necessario, modificare i nomi dei parametri.This includes common variables and parameters so that you can copy and paste this code snippet into your solution file and change the parameter names.

{
    "name": "[concat(parameters('accountName'), '/', variables('Runbook').Name)]",
    "type": "Microsoft.Automation/automationAccounts/runbooks",
    "apiVersion": "[variables('AutomationApiVersion')]",
    "dependsOn": [
    ],
    "location": "[parameters('regionId')]",
    "tags": { },
    "properties": {
        "runbookType": "[variables('Runbook').Type]",
        "logProgress": "true",
        "logVerbose": "true",
        "description": "[variables('Runbook').Description]",
        "publishContentLink": {
            "uri": "[variables('Runbook').Uri]",
            "version": [variables('Runbook').Version]"
        }
    }
}

Le proprietà dei runbook sono descritte nella tabella seguente.The properties for runbooks are described in the following table.

ProprietàProperty DescrizioneDescription
runbookTyperunbookType Specifica il tipo del runbook.Specifies the types of the runbook.

Script - Script di PowerShellScript - PowerShell script
PowerShell - Flusso di lavoro di PowerShellPowerShell - PowerShell workflow
GraphPowerShell - Runbook di script di PowerShell graficoGraphPowerShell - Graphical PowerShell script runbook
GraphPowerShellWorkflow - Runbook di flusso di lavoro di PowerShell graficoGraphPowerShellWorkflow - Graphical PowerShell workflow runbook
logProgresslogProgress Specifica se devono essere generati record di avanzamento per il runbook.Specifies whether progress records should be generated for the runbook.
logVerboselogVerbose Specifica se devono essere generati record dettagliati per il runbook.Specifies whether verbose records should be generated for the runbook.
descriptiondescription Descrizione facoltativa per il runbook.Optional description for the runbook.
publishContentLinkpublishContentLink Specifica il contenuto del runbook.Specifies the content of the runbook.

uri - URI del contenuto del runbook.uri - Uri to the content of the runbook. Si tratterà di un file con estensione ps1 per i runbook di PowerShell e di script e di un file di runbook grafico esportato per un runbook di Graph.This will be a .ps1 file for PowerShell and Script runbooks, and an exported graphical runbook file for a Graph runbook.
version - Versione del runbook per il monitoraggio.version - Version of the runbook for your own tracking.

Processi di AutomazioneAutomation jobs

Quando si avvia un runbook in Automazione di Azure, viene creato un processo di automazione.When you start a runbook in Azure Automation, it creates an automation job. È possibile aggiungere una risorsa "processo di automazione" alla soluzione per consentire l'avvio automatico di un runbook nel momento in cui viene installata la soluzione di gestione.You can add an automation job resource to your solution to automatically start a runbook when the management solution is installed. Questo metodo, in genere, viene adottato per avviare i runbook usati per la configurazione iniziale della soluzione.This method is typically used to start runbooks that are used for initial configuration of the solution. Per avviare un runbook a intervalli regolari, creare una pianificazione e una pianificazione processi.To start a runbook at regular intervals, create a schedule and a job schedule

Le risorse "processo" sono di tipo Microsoft.Automation/automationAccounts/jobs e presentano la struttura seguente.Job resources have a type of Microsoft.Automation/automationAccounts/jobs and have the following structure. Nella struttura sono inclusi parametri e variabili comuni ed è quindi possibile copiare e incollare questo frammento di codice nel file della soluzione e, se necessario, modificare i nomi dei parametri.This includes common variables and parameters so that you can copy and paste this code snippet into your solution file and change the parameter names.

{
  "name": "[concat(parameters('accountName'), '/', parameters('Runbook').JobGuid)]",
  "type": "Microsoft.Automation/automationAccounts/jobs",
  "apiVersion": "[variables('AutomationApiVersion')]",
  "location": "[parameters('regionId')]",
  "dependsOn": [
    "[concat('Microsoft.Automation/automationAccounts/', parameters('accountName'), '/runbooks/', variables('Runbook').Name)]"
  ],
  "tags": { },
  "properties": {
    "runbook": {
      "name": "[variables('Runbook').Name]"
    },
    "parameters": {
      "Parameter1": "[[variables('Runbook').Parameter1]",
      "Parameter2": "[[variables('Runbook').Parameter2]"
    }
  }
}

Le proprietà dei processi di automazione sono descritte nella tabella seguente.The properties for automation jobs are described in the following table.

ProprietàProperty DescrizioneDescription
runbookrunbook Entità name singola con il nome del runbook da avviare.Single name entity with the name of the runbook to start.
parametersparameters Entità relativa ad ogni valore di parametro richiesto dal runbook.Entity for each parameter value required by the runbook.

Il processo include il nome del runbook e i valori dei parametri da inviare al runbook.The job includes the runbook name and any parameter values to be sent to the runbook. Il processo deve dipendere dal runbook in fase di avvio, poiché questo deve essere creato prima del processo.The job should depend on the runbook that it's starting since the runbook must be created before the job. Se sono presenti più runbook da avviare, è possibile definire l'ordine di avvio impostando un processo in modo che dipenda da un altro processo che deve essere eseguito prima.If you have multiple runbooks that should be started you can define their order by having a job depend on any other jobs that should be run first.

Il nome di una risorsa processo deve contenere un GUID che viene in genere assegnato da un parametro.The name of a job resource must contain a GUID which is typically assigned by a parameter. Altre informazioni sui parametri GUID sono disponibili in Creazione di soluzioni di gestione in Operations Management Suite (OMS).You can read more about GUID parameters in Creating solutions in Operations Management Suite (OMS).

CertificatiCertificates

I certificati di automazione di Azure sono di tipo Microsoft.Automation/automationAccounts/certificates e presentano la struttura seguente.Azure Automation certificates have a type of Microsoft.Automation/automationAccounts/certificates and have the following structure. Nella struttura sono inclusi parametri e variabili comuni ed è quindi possibile copiare e incollare questo frammento di codice nel file della soluzione e, se necessario, modificare i nomi dei parametri.This includes common variables and parameters so that you can copy and paste this code snippet into your solution file and change the parameter names.

{
  "name": "[concat(parameters('accountName'), '/', variables('Certificate').Name)]",
  "type": "Microsoft.Automation/automationAccounts/certificates",
  "apiVersion": "[variables('AutomationApiVersion')]",
  "location": "[parameters('regionId')]",
  "tags": { },
  "dependsOn": [
  ],
  "properties": {
    "base64Value": "[variables('Certificate').Base64Value]",
    "thumbprint": "[variables('Certificate').Thumbprint]"
  }
}

Le proprietà delle risorse "certificati" sono descritte nella tabella seguente.The properties for Certificates resources are described in the following table.

ProprietàProperty DescrizioneDescription
base64Valuebase64Value Valore Base 64 per il certificato.Base 64 value for the certificate.
thumbprintthumbprint Identificazione personale del certificato.Thumbprint for the certificate.

CredenzialiCredentials

Le credenziali di automazione di Azure sono di tipo Microsoft.Automation/automationAccounts/credentials e presentano la struttura seguente.Azure Automation credentials have a type of Microsoft.Automation/automationAccounts/credentials and have the following structure. Nella struttura sono inclusi parametri e variabili comuni ed è quindi possibile copiare e incollare questo frammento di codice nel file della soluzione e, se necessario, modificare i nomi dei parametri.This includes common variables and parameters so that you can copy and paste this code snippet into your solution file and change the parameter names.

{
  "name": "[concat(parameters('accountName'), '/', variables('Credential').Name)]",
  "type": "Microsoft.Automation/automationAccounts/credentials",
  "apiVersion": "[variables('AutomationApiVersion')]",
  "location": "[parameters('regionId')]",
  "tags": { },
  "dependsOn": [
  ],
  "properties": {
    "userName": "[parameters('credentialUsername')]",
    "password": "[parameters('credentialPassword')]"
  }
}

Le proprietà delle risorse "credenziali" sono descritte nella tabella seguente.The properties for Credential resources are described in the following table.

ProprietàProperty DescrizioneDescription
userNameuserName Nome utente per la credenziale.User name for the credential.
passwordpassword Password per la credenziale.Password for the credential.

PianificazioniSchedules

Le pianificazioni di automazione di Azure sono di tipo Microsoft.Automation/automationAccounts/schedules e presentano la struttura seguente.Azure Automation schedules have a type of Microsoft.Automation/automationAccounts/schedules and have the the following structure. Nella struttura sono inclusi parametri e variabili comuni ed è quindi possibile copiare e incollare questo frammento di codice nel file della soluzione e, se necessario, modificare i nomi dei parametri.This includes common variables and parameters so that you can copy and paste this code snippet into your solution file and change the parameter names.

{
  "name": "[concat(parameters('accountName'), '/', variables('Schedule').Name)]",
  "type": "microsoft.automation/automationAccounts/schedules",
  "apiVersion": "[variables('AutomationApiVersion')]",
  "tags": { },
  "dependsOn": [
  ],
  "properties": {
    "description": "[variables('Schedule').Description]",
    "startTime": "[parameters('scheduleStartTime')]",
    "timeZone": "[parameters('scheduleTimeZone')]",
    "isEnabled": "[variables('Schedule').IsEnabled]",
    "interval": "[variables('Schedule').Interval]",
    "frequency": "[variables('Schedule').Frequency]"
  }
}

Le proprietà delle risorse pianificazione sono descritte nella tabella seguente.The properties for schedule resources are described in the following table.

ProprietàProperty DescrizioneDescription
descriptiondescription Descrizione facoltativa per la pianificazione.Optional description for the schedule.
startTimestartTime Specifica l'ora di inizio di una pianificazione come oggetto DateTime.Specifies the start time of a schedule as a DateTime object. È possibile fornire una stringa, se può essere convertita in un oggetto DateTime valido.A string can be provided if it can be converted to a valid DateTime.
isEnabledisEnabled Specifica se la pianificazione è abilitata.Specifies whether the schedule is enabled.
intervalinterval Tipo di intervallo per la pianificazione.The type of interval for the schedule.

dayday
hourhour
frequencyfrequency Frequenza con cui la pianificazione deve essere attivata, in numero di ore o giorni.Frequency that the schedule should fire in number of days or hours.

Per le pianificazioni deve essere definita un'ora di avvio con un valore successivo all'ora corrente.Schedules must have a start time with a value greater than the current time. Non è possibile specificare questo valore con una variabile poiché non è possibile sapere quando verrà installata la soluzione.You cannot provide this value with a variable since you would have no way of knowing when it's going to be installed.

Applicare una delle due strategie seguenti quando si usano risorse di pianificazione in una soluzione.Use one of the following two strategies when using schedule resources in a solution.

  • Usare un parametro per l'ora di avvio della pianificazione:Use a parameter for the start time of the schedule. all'utente verrà richiesto di specificare un valore durante l'installazione della soluzione.This will prompt the user to provide a value when they install the solution. In caso di più pianificazioni, è possibile usare un unico valore di parametro anche per più di esse.If you have multiple schedules, you could use a single parameter value for more than one of them.
  • Creare le pianificazioni usando un runbook che viene avviato al momento dell'installazione della soluzione.Create the schedules using a runbook that starts when the solution is installed. In questo modo viene eliminata la necessità per l'utente di specificare un'ora, ma la pianificazione non potrà essere contenuta nella soluzione e verrà quindi rimossa con l'eliminazione della soluzione.This removes the requirement of the user to specify a time, but you can't contain the schedule in your solution so it will be removed when the solution is removed.

Pianificazioni dei processiJob schedules

Le risorse "pianificazione dei processi" collegano un runbook a una pianificazione.Job schedule resources link a runbook with a schedule. Sono di tipo Microsoft.Automation/automationAccounts/jobSchedules e presentano la struttura seguente.They have a type of Microsoft.Automation/automationAccounts/jobSchedules and have the the following structure. Nella struttura sono inclusi parametri e variabili comuni ed è quindi possibile copiare e incollare questo frammento di codice nel file della soluzione e, se necessario, modificare i nomi dei parametri.This includes common variables and parameters so that you can copy and paste this code snippet into your solution file and change the parameter names.

{
  "name": "[concat(parameters('accountName'), '/', variables('Schedule').LinkGuid)]",
  "type": "microsoft.automation/automationAccounts/jobSchedules",
  "apiVersion": "[variables('AutomationApiVersion')]",
  "location": "[parameters('regionId')]",
  "dependsOn": [
    "[resourceId('Microsoft.Automation/automationAccounts/runbooks/', parameters('accountName'), variables('Runbook').Name)]",
    "[resourceId('Microsoft.Automation/automationAccounts/schedules/', parameters('accountName'), variables('Schedule').Name)]"
  ],
  "tags": {
  },
  "properties": {
    "schedule": {
      "name": "[variables('Schedule').Name]"
    },
    "runbook": {
      "name": "[variables('Runbook').Name]"
    }
  }
}

Le proprietà delle pianificazioni dei processi sono descritte nella tabella seguente.The properties for job schedules are described in the following table.

ProprietàProperty DescrizioneDescription
schedule nameschedule name Entità name singola con il nome della pianificazione.Single name entity with the name of the schedule.
runbook namerunbook name Entità name singola con il nome del runbook.Single name entity with the name of the runbook.

VariabiliVariables

Le variabili di automazione di Azure sono di tipo Microsoft.Automation/automationAccounts/variables e presentano la struttura seguente.Azure Automation variables have a type of Microsoft.Automation/automationAccounts/variables and have the following structure. Nella struttura sono inclusi parametri e variabili comuni ed è quindi possibile copiare e incollare questo frammento di codice nel file della soluzione e, se necessario, modificare i nomi dei parametri.This includes common variables and parameters so that you can copy and paste this code snippet into your solution file and change the parameter names.

{
  "name": "[concat(parameters('accountName'), '/', variables('Variable').Name)]",
  "type": "microsoft.automation/automationAccounts/variables",
  "apiVersion": "[variables('AutomationApiVersion')]",
  "tags": { },
  "dependsOn": [
  ],
  "properties": {
    "description": "[variables('Variable').Description]",
    "isEncrypted": "[variables('Variable').Encrypted]",
    "type": "[variables('Variable').Type]",
    "value": "[variables('Variable').Value]"
  }
}

Le proprietà delle risorse "variabile" sono descritte nella tabella seguente.The properties for variable resources are described in the following table.

ProprietàProperty DescrizioneDescription
descriptiondescription Descrizione facoltativa per la variabile.Optional description for the variable.
isEncryptedisEncrypted Specifica se la variabile deve essere crittografata.Specifies whether the variable should be encrypted.
typetype Questa proprietà attualmente non ha alcun effetto.This property currently has no effect. Il tipo di dati della variabile verrà determinato dal valore iniziale.The data type of the variable will be determined by the initial value.
valuevalue Valore per la variabile.Value for the variable.

Nota

La proprietà type attualmente non ha alcun effetto sulla variabile che viene creata.The type property currently has no effect on the variable being created. Il tipo di dati per la variabile verrà determinato dal valore.The data type for the variable will be determined by the value.

Se si imposta il valore iniziale per la variabile, è necessario configurarla come tipo di dati corretto.If you set the initial value for the variable, it must be configured as the correct data type. La tabella seguente elenca i diversi tipi di dati disponibili e la rispettiva sintassi.The following table provides the different data types allowable and their syntax. Si noti che i valori in JSON devono essere sempre racchiusi tra virgolette con qualsiasi carattere speciale tra virgolette.Note that values in JSON are expected to always be enclosed in quotes with any special characters within the quotes. Un valore di stringa, ad esempio, verrà specificato dalle virgolette all'inizio e alla fine della stringa, usando il carattere di escape (\), mentre un valore numerico verrà specificato con un set di virgolette.For example, a string value would be specified by quotes around the string (using the escape character (\)) while a numeric value would be specified with one set of quotes.

Tipo di datiData type DescrizioneDescription EsempioExample RisoluzioneResolves to
stringstring Racchiude il valore tra virgolette doppie.Enclose value in double quotes. ""Hello world""""Hello world"" "Hello world""Hello world"
numericnumeric Valore numerico con virgolette singole.Numeric value with single quotes. "64""64" 6464
booleanboolean true o false tra virgolette.true or false in quotes. Si noti che questo valore deve essere minuscolo.Note that this value must be lowercase. "true""true" truetrue
datetimedatetime Valore di data serializzato.Serialized date value.
È possibile usare il cmdlet ConvertTo-Json in PowerShell per generare questo valore per una particolare data.You can use the ConvertTo-Json cmdlet in PowerShell to generate this value for a particular date.
Esempio: get-date "5/24/2017 13:14:57" \Example: get-date "5/24/2017 13:14:57" \
ConvertTo-JsonConvertTo-Json "\/Date(1495656897378)\/""\/Date(1495656897378)\/"

ModuliModules

La soluzione di gestione non deve necessariamente definire i moduli globali usati dai runbook, poiché saranno sempre disponibili nel proprio account di automazione.Your management solution does not need to define global modules used by your runbooks because they will always be available in your Automation account. È tuttavia necessario includere una risorsa per qualsiasi altro modulo usato dai runbook.You do need to include a resource for any other module used by your runbooks.

I moduli di integrazione sono di tipo Microsoft.Automation/automationAccounts/modules e presentano la struttura seguente.Integration modules have a type of Microsoft.Automation/automationAccounts/modules and have the following structure. Nella struttura sono inclusi parametri e variabili comuni ed è quindi possibile copiare e incollare questo frammento di codice nel file della soluzione e, se necessario, modificare i nomi dei parametri.This includes common variables and parameters so that you can copy and paste this code snippet into your solution file and change the parameter names.

{
  "name": "[concat(parameters('accountName'), '/', variables('Module').Name)]",
  "type": "Microsoft.Automation/automationAccounts/modules",
  "apiVersion": "[variables('AutomationApiVersion')]",
  "dependsOn": [
  ],
  "properties": {
    "contentLink": {
      "uri": "[variables('Module').Uri]"
    }
  }
}

Le proprietà delle risorse "modulo" sono descritte nella tabella seguente.The properties for module resources are described in the following table.

ProprietàProperty DescrizioneDescription
contentLinkcontentLink Specifica il contenuto del modulo.Specifies the content of the module.

uri - URI del contenuto del modulo.uri - Uri to the content of the module. Si tratterà di un file con estensione ps1 per i runbook di PowerShell e di script e di un file di runbook grafico esportato per un runbook di Graph.This will be a .ps1 file for PowerShell and Script runbooks, and an exported graphical runbook file for a Graph runbook.
version - Versione del modulo per il monitoraggio.version - Version of the module for your own tracking.

Il runbook deve dipendere dalla risorsa "modulo" affinché la risorsa venga creata prima del runbook.The runbook should depend on the module resource to ensure that it's created before the runbook.

Aggiornamento dei moduliUpdating modules

Se si aggiorna una soluzione di gestione che include un runbook che usa una pianificazione e la nuova versione della soluzione ha un nuovo modulo usato dal runbook, il runbook potrebbe usare la versione precedente del modulo.If you update a management solution that includes a runbook that uses a schedule, and the new version of your solution has a new module used by that runbook, then the runbook may use the old version of the module. È necessario includere i runbook seguenti nella soluzione e creare un processo per eseguirli prima di qualsiasi altro runbook.You should include the following runbooks in your solution and create a job to run them before any other runbooks. In questo modo, tutti i moduli verranno aggiornati come necessario prima del caricamento del runbook.This will ensure that any modules are updated as required before the runbooks are loaded.

EsempioSample

Di seguito è riportato un esempio di soluzione che include le risorse seguenti:Following is a sample of a solution that include that includes the following resources:

  • Runbook.Runbook. Si tratta di un runbook di esempio archiviato in un repository GitHub pubblico.This is a sample runbook stored in a public GitHub repository.
  • Processo di automazione che avvia il runbook quando viene installata la soluzione.Automation job that starts the runbook when the solution is installed.
  • Pianificazione e pianificazione dei processi per avviare il runbook a intervalli regolari.Schedule and job schedule to start the runbook at regular intervals.
  • Certificato.Certificate.
  • Credenziali.Credential.
  • Variabile.Variable.
  • Modulo.Module. Si tratta del modulo OMSIngestionAPI per la scrittura di dati in Log Analytics.This is the OMSIngestionAPI module for writing data to Log Analytics.

L'esempio usa variabili dei parametri di soluzione standard comunemente usate in una soluzione, anziché impostare i valori come hardcoded nelle definizioni delle risorse.The sample uses standard solution parameters variables that would commonly be used in a solution as opposed to hardcoding values in the resource definitions.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "workspaceName": {
      "type": "string",
      "metadata": {
        "Description": "Name of Log Analytics workspace."
      }
    },
    "accountName": {
      "type": "string",
      "metadata": {
        "Description": "Name of Automation account."
      }
    },
    "workspaceregionId": {
      "type": "string",
      "metadata": {
        "Description": "Region of Log Analytics workspace."
      }
    },
    "regionId": {
      "type": "string",
      "metadata": {
        "Description": "Region of Automation account."
      }
    },
    "pricingTier": {
      "type": "string",
      "metadata": {
        "Description": "Pricing tier of both Log Analytics workspace and Azure Automation account."
      }
    },
    "certificateBase64Value": {
      "type": "string",
      "metadata": {
        "Description": "Base 64 value for certificate."
      }
    },
    "certificateThumbprint": {
      "type": "securestring",
      "metadata": {
        "Description": "Thumbprint for certificate."
      }
    },
    "credentialUsername": {
      "type": "string",
      "metadata": {
        "Description": "Username for credential."
      }
    },
    "credentialPassword": {
      "type": "securestring",
      "metadata": {
        "Description": "Password for credential."
      }
    },
    "scheduleStartTime": {
      "type": "string",
      "metadata": {
        "Description": "Start time for shedule."
      }
    },
    "scheduleTimeZone": {
      "type": "string",
      "metadata": {
        "Description": "Time zone for schedule."
      }
    },
    "scheduleLinkGuid": {
      "type": "string",
      "metadata": {
        "description": "GUID for the schedule link to runbook.",
        "control": "guid"
      }
    },
    "runbookJobGuid": {
      "type": "string",
      "metadata": {
        "description": "GUID for the runbook job.",
        "control": "guid"
      }
    }
  },
  "variables": {
    "SolutionName": "MySolution",
    "SolutionVersion": "1.0",
    "SolutionPublisher": "Contoso",
    "ProductName": "SampleSolution",

    "LogAnalyticsApiVersion": "2015-11-01-preview",
    "AutomationApiVersion": "2015-10-31",

    "Runbook": {
      "Name": "MyRunbook",
      "Description": "Sample runbook",
      "Type": "PowerShell",
      "Uri": "https://raw.githubusercontent.com/user/myrepo/master/samples/MyRunbook.ps1",
      "JobGuid": "[parameters('runbookJobGuid')]"
    },

    "Certificate": {
      "Name": "MyCertificate",
      "Base64Value": "[parameters('certificateBase64Value')]",
      "Thumbprint": "[parameters('certificateThumbprint')]"
    },

    "Credential": {
      "Name": "MyCredential",
      "UserName": "[parameters('credentialUsername')]",
      "Password": "[parameters('credentialPassword')]"
    },

    "Schedule": {
      "Name": "MySchedule",
      "Description": "Sample schedule",
      "IsEnabled": "true",
      "Interval": "1",
      "Frequency": "hour",
      "StartTime": "[parameters('scheduleStartTime')]",
      "TimeZone": "[parameters('scheduleTimeZone')]",
      "LinkGuid": "[parameters('scheduleLinkGuid')]"
    },

    "Variable": {
      "Name": "MyVariable",
      "Description": "Sample variable",
      "Encrypted": 0,
      "Type": "string",
      "Value": "'This is my string value.'"
    },

    "Module": {
      "Name": "OMSIngestionAPI",
      "Uri": "https://devopsgallerystorage.blob.core.windows.net/packages/omsingestionapi.1.3.0.nupkg"
    }
  },
  "resources": [
    {
      "name": "[concat(variables('SolutionName'), '[' ,parameters('workspacename'), ']')]",
      "location": "[parameters('workspaceRegionId')]",
      "tags": { },
      "type": "Microsoft.OperationsManagement/solutions",
      "apiVersion": "[variables('LogAnalyticsApiVersion')]",
      "dependsOn": [
        "[resourceId('Microsoft.Automation/automationAccounts/runbooks/', parameters('accountName'), variables('Runbook').Name)]",
        "[resourceId('Microsoft.Automation/automationAccounts/jobs/', parameters('accountName'), variables('Runbook').JobGuid)]",
        "[resourceId('Microsoft.Automation/automationAccounts/certificates/', parameters('accountName'), variables('Certificate').Name)]",
        "[resourceId('Microsoft.Automation/automationAccounts/credentials/', parameters('accountName'), variables('Credential').Name)]",
        "[resourceId('Microsoft.Automation/automationAccounts/schedules/', parameters('accountName'), variables('Schedule').Name)]",
        "[resourceId('Microsoft.Automation/automationAccounts/jobSchedules/', parameters('accountName'), variables('Schedule').LinkGuid)]",
        "[resourceId('Microsoft.Automation/automationAccounts/variables/', parameters('accountName'), variables('Variable').Name)]",
        "[resourceId('Microsoft.Automation/automationAccounts/modules/', parameters('accountName'), variables('Module').Name)]"
      ],
      "properties": {
        "workspaceResourceId": "[resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspacename'))]",
        "referencedResources": [
          "[resourceId('Microsoft.Automation/automationAccounts/modules/', parameters('accountName'), variables('Module').Name)]"
        ],
        "containedResources": [
          "[resourceId('Microsoft.Automation/automationAccounts/runbooks/', parameters('accountName'), variables('Runbook').Name)]",
          "[resourceId('Microsoft.Automation/automationAccounts/jobs/', parameters('accountName'), variables('Runbook').JobGuid)]",
          "[resourceId('Microsoft.Automation/automationAccounts/certificates/', parameters('accountName'), variables('Certificate').Name)]",
          "[resourceId('Microsoft.Automation/automationAccounts/credentials/', parameters('accountName'), variables('Credential').Name)]",
          "[resourceId('Microsoft.Automation/automationAccounts/schedules/', parameters('accountName'), variables('Schedule').Name)]",
          "[resourceId('Microsoft.Automation/automationAccounts/jobSchedules/', parameters('accountName'), variables('Schedule').LinkGuid)]",
          "[resourceId('Microsoft.Automation/automationAccounts/variables/', parameters('accountName'), variables('Variable').Name)]"
        ]
      },
      "plan": {
        "name": "[concat(variables('SolutionName'), '[' ,parameters('workspaceName'), ']')]",
        "Version": "[variables('SolutionVersion')]",
        "product": "[variables('ProductName')]",
        "publisher": "[variables('SolutionPublisher')]",
        "promotionCode": ""
      }
    },
    {
      "name": "[concat(parameters('accountName'), '/', variables('Runbook').Name)]",
      "type": "Microsoft.Automation/automationAccounts/runbooks",
      "apiVersion": "[variables('AutomationApiVersion')]",
      "dependsOn": [
      ],
      "location": "[parameters('regionId')]",
      "tags": { },
      "properties": {
        "runbookType": "[variables('Runbook').Type]",
        "logProgress": "true",
        "logVerbose": "true",
        "description": "[variables('Runbook').Description]",
        "publishContentLink": {
          "uri": "[variables('Runbook').Uri]",
          "version": "1.0.0.0"
        }
      }
    },
    {
      "name": "[concat(parameters('accountName'), '/', variables('Runbook').JobGuid)]",
      "type": "Microsoft.Automation/automationAccounts/jobs",
      "apiVersion": "[variables('AutomationApiVersion')]",
      "location": "[parameters('regionId')]",
      "dependsOn": [
        "[concat('Microsoft.Automation/automationAccounts/', parameters('accountName'), '/runbooks/', variables('Runbook').Name)]"
      ],
      "tags": { },
      "properties": {
        "runbook": {
          "name": "[variables('Runbook').Name]"
        },
        "parameters": {
          "targetSubscriptionId": "[subscription().subscriptionId]",
          "resourcegroup": "[resourceGroup().name]",
          "automationaccount": "[parameters('accountName')]"
        }
      }
    },
    {
      "name": "[concat(parameters('accountName'), '/', variables('Certificate').Name)]",
      "type": "Microsoft.Automation/automationAccounts/certificates",
      "apiVersion": "[variables('AutomationApiVersion')]",
      "location": "[parameters('regionId')]",
      "tags": { },
      "dependsOn": [
      ],
      "properties": {
        "Base64Value": "[variables('Certificate').Base64Value]",
        "Thumbprint": "[variables('Certificate').Thumbprint]"
      }
    },
    {
      "name": "[concat(parameters('accountName'), '/', variables('Credential').Name)]",
      "type": "Microsoft.Automation/automationAccounts/credentials",
      "apiVersion": "[variables('AutomationApiVersion')]",
      "location": "[parameters('regionId')]",
      "tags": { },
      "dependsOn": [
      ],
      "properties": {
        "userName": "[variables('Credential').UserName]",
        "password": "[variables('Credential').Password]"
      }
    },
    {
      "name": "[concat(parameters('accountName'), '/', variables('Schedule').Name)]",
      "type": "microsoft.automation/automationAccounts/schedules",
      "apiVersion": "[variables('AutomationApiVersion')]",
      "tags": { },
      "dependsOn": [
      ],
      "properties": {
        "description": "[variables('Schedule').Description]",
        "startTime": "[variables('Schedule').StartTime]",
        "timeZone": "[variables('Schedule').TimeZone]",
        "isEnabled": "[variables('Schedule').IsEnabled]",
        "interval": "[variables('Schedule').Interval]",
        "frequency": "[variables('Schedule').Frequency]"
      }
    },
    {
      "name": "[concat(parameters('accountName'), '/', variables('Schedule').LinkGuid)]",
      "type": "microsoft.automation/automationAccounts/jobSchedules",
      "apiVersion": "[variables('AutomationApiVersion')]",
      "location": "[parameters('regionId')]",
      "dependsOn": [
        "[resourceId('Microsoft.Automation/automationAccounts/runbooks/', parameters('accountName'), variables('Runbook').Name)]",
        "[resourceId('Microsoft.Automation/automationAccounts/schedules/', parameters('accountName'), variables('Schedule').Name)]"
      ],
      "tags": {
      },
      "properties": {
        "schedule": {
          "name": "[variables('Schedule').Name]"
        },
        "runbook": {
          "name": "[variables('Runbook').Name]"
        }
      }
    },
    {
      "name": "[concat(parameters('accountName'), '/', variables('Variable').Name)]",
      "type": "microsoft.automation/automationAccounts/variables",
      "apiVersion": "[variables('AutomationApiVersion')]",
      "tags": { },
      "dependsOn": [
      ],
      "properties": {
        "description": "[variables('Variable').Description]",
        "isEncrypted": "[variables('Variable').Encrypted]",
        "type": "[variables('Variable').Type]",
        "value": "[variables('Variable').Value]"
      }
    },
    {
      "name": "[concat(parameters('accountName'), '/', variables('Module').Name)]",
      "type": "Microsoft.Automation/automationAccounts/modules",
      "apiVersion": "[variables('AutomationApiVersion')]",
      "dependsOn": [
      ],
      "properties": {
        "contentLink": {
          "uri": "[variables('Module').Uri]"
        }
      }
    }

  ],
  "outputs": { }
}

Passaggi successiviNext steps