Creación de una cuenta de Azure Automation con una plantilla de Resource Manager

Azure Automation ofrece un servicio de automatización y configuración basado en la nube que admite una administración coherente en los entornos de Azure y que no son de Azure. En este artículo se muestra cómo implementar una plantilla de Azure Resource Manager que crea una cuenta de Automation. El uso de una plantilla de ARM requiere menos pasos que otros métodos de implementación. La plantilla JSON especifica valores predeterminados para los parámetros que es probable que se utilicen como configuración estándar en el entorno. Puede almacenar la plantilla en una cuenta de Azure Storage para el acceso compartido en la organización. Para más información sobre el trabajo con plantillas, consulte Implementación de recursos con plantillas de ARM y la CLI de Azure.

Una Plantilla de Azure Resource Manager es un archivo de notación de objetos JavaScript (JSON) que define tanto la infraestructura como la configuración de un proyecto. La plantilla usa sintaxis declarativa. Se describe la implementación deseada sin escribir la secuencia de comandos de programación para crear la implementación.

La plantilla de ejemplo realiza los siguientes pasos:

  • Automatiza la creación de un área de trabajo de Log Analytics en Azure Monitor.
  • Automatiza la creación de una cuenta de Azure Automation.
  • El vínculo de la cuenta de Automation al área de trabajo de Log Analytics.
  • Agrega runbooks de Automation de ejemplo a la cuenta.

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Requisitos previos

Si no está familiarizado con Azure Automation y Azure Monitor, es importante que comprenda los siguientes detalles de configuración. Pueden ayudarle a evitar errores al intentar crear, configurar y usar un área de trabajo de Log Analytics vinculada a la nueva cuenta de Automation.

  • Revise los detalles adicionales para conocer totalmente las opciones de configuración del área de trabajo, como el modo de control de acceso, el plan de tarifa, la retención y el nivel de reserva de capacidad.

  • Revise las asignaciones de área de trabajo para especificar las regiones admitidas en línea o en un archivo de parámetros. Solo en determinadas regiones se puede vincular un área de trabajo de Log Analytics y una cuenta de Automation en la suscripción.

  • Si no está familiarizado con Azure Monitor Logs y aún no ha implementado un área de trabajo, revise la guía de diseño del área de trabajo. Este documento le ayudará a obtener información sobre el control de acceso y a comprender las estrategias de implementación de diseño que recomendamos para su organización.

Revisión de la plantilla

La plantilla usada en este artículo forma parte de las plantillas de inicio rápido de Azure.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "workspaceName": {
      "type": "string",
      "metadata": {
        "description": "Workspace name"
      }
    },
    "sku": {
      "type": "string",
      "defaultValue": "pergb2018",
      "allowedValues": [
        "pergb2018",
        "Free",
        "Standalone",
        "PerNode",
        "Standard",
        "Premium"
      ],
      "metadata": {
        "description": "Pricing tier: perGB2018 or legacy tiers (Free, Standalone, PerNode, Standard or Premium), which are not available to all customers."
      }
    },
    "dataRetention": {
      "type": "int",
      "defaultValue": 30,
      "minValue": 7,
      "maxValue": 730,
      "metadata": {
        "description": "Number of days to retain data."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Specifies the location in which to create the workspace."
      }
    },
    "automationAccountName": {
      "type": "string",
      "metadata": {
        "description": "Automation account name"
      }
    },
    "sampleGraphicalRunbookName": {
      "type": "String",
      "defaultValue": "AzureAutomationTutorial"
    },
    "sampleGraphicalRunbookDescription": {
      "type": "String",
      "defaultValue": "An example runbook that gets all the Resource Manager resources by using the Run As account (service principal)."
    },
    "samplePowerShellRunbookName": {
      "type": "String",
      "defaultValue": "AzureAutomationTutorialScript"
    },
    "samplePowerShellRunbookDescription": {
      "type": "String",
      "defaultValue": "An example runbook that gets all the Resource Manager resources by using the Run As account (service principal)."
    },
    "samplePython2RunbookName": {
      "type": "String",
      "defaultValue": "AzureAutomationTutorialPython2"
    },
    "samplePython2RunbookDescription": {
      "type": "String",
      "defaultValue": "An example runbook that gets all the Resource Manager resources by using the Run As account (service principal)."
    },
    "_artifactsLocation": {
      "type": "string",
      "defaultValue": "[deployment().properties.templateLink.uri]",
      "metadata": {
        "description": "URI to artifacts location"
      }
    },
    "_artifactsLocationSasToken": {
      "type": "securestring",
      "defaultValue": "",
      "metadata": {
        "description": "The sasToken required to access _artifactsLocation.  When the template is deployed using the accompanying scripts, a sasToken will be automatically generated"
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.OperationalInsights/workspaces",
      "apiVersion": "2020-08-01",
      "name": "[parameters('workspaceName')]",
      "location": "[parameters('location')]",
      "properties": {
        "sku": {
          "name": "[parameters('sku')]"
        },
        "retentionInDays": "[parameters('dataRetention')]",
        "features": {
          "searchVersion": 1,
          "legacy": 0
        }
      }
    },
    {
      "type": "Microsoft.Automation/automationAccounts",
      "apiVersion": "2020-01-13-preview",
      "name": "[parameters('automationAccountName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[parameters('workspaceName')]"
      ],
      "identity": {
        "type": "SystemAssigned"
      },
      "properties": {
        "sku": {
          "name": "Basic"
        }
      },
      "resources": [
        {
          "type": "runbooks",
          "apiVersion": "2020-01-13-preview",
          "name": "[parameters('sampleGraphicalRunbookName')]",
          "location": "[parameters('location')]",
          "dependsOn": [
            "[parameters('automationAccountName')]"
          ],
          "properties": {
            "runbookType": "GraphPowerShell",
            "logProgress": "false",
            "logVerbose": "false",
            "description": "[parameters('sampleGraphicalRunbookDescription')]",
            "publishContentLink": {
              "uri": "[uri(parameters('_artifactsLocation'), concat('scripts/AzureAutomationTutorial.graphrunbook', parameters('_artifactsLocationSasToken')))]",
              "version": "1.0.0.0"
            }
          }
        },
        {
          "type": "runbooks",
          "apiVersion": "2020-01-13-preview",
          "name": "[parameters('samplePowerShellRunbookName')]",
          "location": "[parameters('location')]",
          "dependsOn": [
            "[parameters('automationAccountName')]"
          ],
          "properties": {
            "runbookType": "PowerShell",
            "logProgress": "false",
            "logVerbose": "false",
            "description": "[parameters('samplePowerShellRunbookDescription')]",
            "publishContentLink": {
              "uri": "[uri(parameters('_artifactsLocation'), concat('scripts/AzureAutomationTutorial.ps1', parameters('_artifactsLocationSasToken')))]",
              "version": "1.0.0.0"
            }
          }
        },
        {
          "type": "runbooks",
          "apiVersion": "2020-01-13-preview",
          "name": "[parameters('samplePython2RunbookName')]",
          "location": "[parameters('location')]",
          "dependsOn": [
            "[parameters('automationAccountName')]"
          ],
          "properties": {
            "runbookType": "Python2",
            "logProgress": "false",
            "logVerbose": "false",
            "description": "[parameters('samplePython2RunbookDescription')]",
            "publishContentLink": {
              "uri": "[uri(parameters('_artifactsLocation'), concat('scripts/AzureAutomationTutorialPython2.py', parameters('_artifactsLocationSasToken')))]",
              "version": "1.0.0.0"
            }
          }
        }
      ]
    },
    {
      "type": "Microsoft.OperationalInsights/workspaces/linkedServices",
      "apiVersion": "2020-08-01",
      "name": "[concat(parameters('workspaceName'), '/' , 'Automation')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[parameters('workspaceName')]",
        "[parameters('automationAccountName')]"
      ],
      "properties": {
        "resourceId": "[resourceId('Microsoft.Automation/automationAccounts', parameters('automationAccountName'))]"
      }
    }
  ]
}

Recursos de Azure definidos en la plantilla:

Implementación de la plantilla

  1. Seleccione el botón Implementar en Azure siguiente para iniciar sesión en Azure y abrir la plantilla de ARM.

    Button to deploy the Resource Manager template to Azure.

  2. Escriba o seleccione los siguientes valores:

    Propiedad Descripción
    Subscription Seleccione la suscripción de Azure en la lista desplegable.
    Resource group En la lista desplegable, seleccione el grupo de recursos existente o seleccione Crear.
    Region Este valor se rellenará automáticamente.
    Nombre del área de trabajo Especifique un nombre para el nuevo área de trabajo de Log Analytics.
    SKU El valor predeterminado es el plan de tarifa por GB publicado en el modelo de precios de abril de 2018. Si quiere crear o configurar un área de trabajo de Log Analytics en una suscripción que ha elegido el modelo de precios de abril de 2018, el único plan de tarifa válido de Log Analytics es PerGB2018.
    Retención de datos Su valor predeterminado es 30 días.
    Location El valor se rellenará automáticamente con la ubicación usada para el grupo de recursos.
    Nombre de la cuenta de Automation Escriba un nombre para la nueva cuenta de Automation.
    Nombre de ejemplo de un runbook gráfico Déjelo tal cual.
    Descripción de ejemplo de un runbook gráfico Déjelo tal cual.
    Nombre de ejemplo de un runbook de PowerShell Déjelo tal cual.
    Descripción de ejemplo del runbook de PowerShell Déjelo tal cual.
    Nombre de ejemplo de Python2Runbook Déjelo tal cual.
    Descripción de ejemplo de Python2Runbook Déjelo tal cual.
    _artifacts Location (Ubicación de _artefactos) Déjelo tal cual.* URI a la ubicación de artefactos.
    _artifacts Location Sas Token (Token de Sas de ubicación de _artefactos) déjelo en blanco. SasToken necesario para acceder a _artifactsLocation. Cuando la plantilla se implementa mediante los scripts complementarios, se genera automáticamente un valor de sasToken.

    *Cuando intenta ejecutar la plantilla de ARM desde PowerShell, la CLI o la característica Plantillas del portal, si el parámetro _artifactsLocation no está configurado correctamente, recibirá un mensaje de error parecido al siguiente:

    "message": "Deployment template validation failed: 'The template resource '_artifactsLocation' at line '96' and column '31' is not valid: The language expression property 'templateLink' doesn't exist, available properties are 'template, templateHash, parameters, mode, debugSetting, provisioningState'.. Please see https://aka.ms/arm-template-expressions for usage details.'."

    Para evitar este error, cuando se ejecute desde la característica Plantillas del portal, especifique el siguiente valor para el parámetro _artifactsLocation: https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.automation/101-automation/azuredeploy.json.

    Si se ejecuta desde PowerShell, incluya el parámetro y su valor -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.automation/101-automation/azuredeploy.json.

    Si se ejecuta desde PowerShell, incluya el parámetro y su valor --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.automation/101-automation/azuredeploy.json.

    Para obtener más referencias acerca del uso de PowerShell o la CLI, consulte Creación de una cuenta de Azure Automation (microsoft.com) en la sección Uso de la plantilla.

  3. Seleccione Revisar y crear y, a continuación, Crear. La implementación puede tardar unos minutos en finalizar. Cuando se completa, la salida es similar a la siguiente imagen:

    Example result when deployment is complete

Revisión de los recursos implementados

  1. Una vez que completada la implementación, recibirá una notificación de Implementación correcta con el vínculo Ir al recurso. En la página del Grupo de recursos, se muestran los nuevos recursos. En la lista, seleccione la nueva cuenta de Automation.

  2. En la parte izquierda, en Automatización de procesos, seleccione Runbooks. En la página Runbooks, se muestran tres runbooks de ejemplo creados con la cuenta de Automation.

    Tutorial runbooks created with Automation account

  3. En la parte izquierda, en Related Resources (Recursos relacionados), seleccione Linked workspace (Área de trabajo vinculada). En la página Linked workspace (Área de trabajo vinculada), se muestra el área de trabajo de Log Analytics que especificó anteriormente como vinculada a la cuenta de Automation.

    Automation account linked to the Log Analytics workspace

Pasos siguientes

Configure las opciones de diagnóstico para que la cuenta de Automation envíe el estado del trabajo de runbook y los flujos de trabajo al área de trabajo de Log Analytics vinculada.