Включение Управления обновлениями с помощью шаблона Azure Resource Manager

Для включения Управления обновлениями службы автоматизации Azure в группе ресурсов можно использовать шаблоны Azure Resource Manager. В этой статье приводится пример шаблона, который автоматизирует выполнение следующих задач:

  • автоматизирует создание рабочей области Log Analytics Azure Monitor;
  • автоматизирует создание учетной записи службы автоматизации Azure;
  • связывает учетную запись службы автоматизации с рабочей областью Log Analytics.
  • добавляет примеры модулей Runbook автоматизации в учетную запись.
  • включает Управление обновлениями.

Если у вас уже есть рабочая область Log Analytics и учетная запись службы автоматизации, развернутая в поддерживаемом регионе в вашей подписке, они не связаны между собой. С помощью этого шаблона вы успешно создадите ссылку и развернете функцию" Управление обновлениями".

Примечание.

Создание учетной записи запуска от имени службы автоматизации на основе шаблона Azure Resource Manager не поддерживается. Сведения о создании учетной записи запуска от имени вручную на портале или с помощью PowerShell см. в статье Создание учетной записи запуска от имени.

После выполнения этих действий необходимо настроить параметры диагностики, чтобы учетная запись службы автоматизации могла отправлять состояния заданий Runbook и потоки заданий в связанную рабочую область Log Analytics.

Версии API

В следующей таблице перечислены версии API для ресурсов, используемых в этом примере.

Ресурс Тип ресурса Версия API
Рабочая область приложений 2020-03-01-preview
Учетная запись службы автоматизации. automation 2020-01-13-preview
Связанные службы рабочей области приложений 2020-03-01-preview
Решения решения 2015-11-01-preview

Перед применением шаблона

Шаблон JSON настроен так, чтобы осталось только указать следующие сведения:

  • имя рабочей области;
  • регион, в котором будет создана рабочая область;
  • Имя учетной записи службы автоматизации.
  • регион, в котором будет создана учетная запись автоматизации.

Для следующих параметров в шаблоне задано значение по умолчанию для рабочей области Log Analytics:

  • sku — по умолчанию используется ценовая категория с платой за гигабайт, выпущенная в апреле 2018 года.
  • dataRetention — по умолчанию задано 30 дней.

Предупреждение

Если вы хотите создать или настроить рабочую область Log Analytics в подписке, использующей модель ценообразования от апреля 2018 года, будет доступна только ценовая категория PerGB2018.

Шаблон в формате JSON указывает значения по умолчанию для других параметров, которые, скорее всего, будут использоваться в качестве стандартной конфигурации в вашей среде. Шаблон можно хранить в учетной записи хранения Azure для общего доступа в организации. Дополнительную информацию о работе с шаблонами см. в статье Развертывание ресурсов с использованием шаблонов Resource Manager и Azure CLI.

Если вы не знакомы со службами автоматизации Azure и Azure Monitor, важно понимать следующие моменты, относящиеся к конфигурации. Они могут помочь избежать ошибок при создании, настройке и использовании рабочей области Log Analytics, связанной с новой учетной записью службы автоматизации.

  • Ознакомьтесь с дополнительными сведениями, чтобы полностью понять возможности конфигурации рабочей области, такие как режим управления доступом, ценовая категория, срок хранения и уровень резервирования мощности.

  • Изучите сопоставления рабочей области, чтобы указывать поддерживаемые регионы в строке или файле параметров. Только определенные регионы поддерживают связывание рабочей области Log Analytics и учетной записи службы автоматизации в подписке.

  • Если вы еще не работали с журналами Azure Monitor и пока не развернули рабочую область, ознакомьтесь с руководством по проектированию рабочей области. В нем содержатся сведения об управлении доступом и приводятся стратегии реализации разработок, которые рекомендуется внедрить в организации.

Развертывание шаблона

  1. Скопируйте и вставьте в него следующий синтаксис JSON:

    {
      "$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"
          }
        }
      },
      "variables": {
        "Updates": {
            "name": "[concat('Updates', '(', parameters('workspaceName'), ')')]",
            "galleryName": "Updates"
          }
      },
      "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
            }
          }
        },
      {
        "apiVersion": "2015-11-01-preview",
        "location": "[parameters('location')]",
        "name": "[variables('Updates').name]",
        "type": "Microsoft.OperationsManagement/solutions",
        "id": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.OperationsManagement/solutions/', variables('Updates').name)]",
        "dependsOn": [
          "[concat('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]"
        ],
        "properties": {
          "workspaceResourceId": "[resourceId('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]"
        },
        "plan": {
          "name": "[variables('Updates').name]",
          "publisher": "Microsoft",
          "promotionCode": "",
          "product": "[concat('OMSGallery/', variables('Updates').galleryName)]"
        }
      },
        {
          "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'))]"
          }
        }
      ]
    }
    
  2. Отредактируйте шаблон с учетом ваших требований. Вместо встраивания параметров в строку запуска попробуйте создать файл параметров Resource Manager.

  3. Сохраните этот файл с именем deployUMSolutiontemplate.json в локальной папке.

  4. Теперь вы можете развернуть этот шаблон. Это можно сделать с помощью PowerShell или Azure CLI. При появлении запроса на ввод имени рабочей области и учетной записи службы автоматизации укажите имя, глобально уникальное во всех подписках Azure.

    PowerShell

    New-AzResourceGroupDeployment `
        -Name <deployment-name> `
        -ResourceGroupName <resource-group-name> `
        -TemplateFile deployUMSolutiontemplate.json `
        -_artifactsLocation "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.automation/101-automation/azuredeploy.json"
    

    Azure CLI

    az deployment group create --resource-group <my-resource-group> --name <my-deployment-name> --template-file deployUMSolutiontemplate.json --parameters _artifactsLocation="https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.automation/101-automation/azuredeploy.json"
    

    Развертывание может занять несколько минут. По завершении выполнения появится сообщение с результатами наподобие приведенного ниже.

    Example result when deployment is complete

Просмотр развернутых ресурсов

  1. Войдите на портал Azure.

  2. На портале Azure откройте учетную запись службы автоматизации, которую вы создали.

  3. В области слева выберите Модули Runbook. На странице модулей Runbook перечислены три учебных модуля Runbook, созданные с помощью учетной записи службы автоматизации.

    Tutorial runbooks created with Automation account

  4. В области слева выберите Связанная рабочая область. На странице связанной рабочей области отображается рабочая область Log Analytics, указанная ранее, которая связана с учетной записью службы автоматизации.

    Automation account linked to the Log Analytics workspace

  5. На панели слева выберите Управление обновлениями. На странице Управление обновлениями отображается страница оценки без каких-либо сведений в результате недавнего включения, а компьютеры не настроены для управления.

    Update Management feature assessment view

Очистка ресурсов

Если они больше не нужны, удалите решение Обновления в рабочей области Log Analytics, удалите связь между учетной записью службы автоматизации и рабочей областью, а затем — учетную запись и рабочую область службы автоматизации.

Следующие шаги