Włączanie rozwiązania Update Management przy użyciu szablonu usługi Azure Resource Manager

Szablon usługi Azure Resource Manager umożliwia włączenie funkcji azure Automation Update Management w grupie zasobów. Ten artykuł zawiera przykładowy szablon, który automatyzuje następujące elementy:

  • Automatyzuje tworzenie obszaru roboczego usługi Log Analytics usługi Azure Monitor.
  • Automatyzuje tworzenie konta usługi Azure Automation.
  • Łączy konto usługi Automation z obszarem roboczym usługi Log Analytics.
  • Dodaje przykładowe elementy runbook usługi Automation do konta.
  • Włącza funkcję Update Management.

Jeśli masz już obszar roboczy usługi Log Analytics i konto usługi Automation wdrożone w obsługiwanym regionie w ramach subskrypcji, nie są one połączone. Użycie tego szablonu pomyślnie utworzy link i wdroży rozwiązanie Update Management.

Uwaga

Tworzenie konta Uruchom jako usługi Automation nie jest obsługiwane w przypadku korzystania z szablonu usługi ARM. Aby ręcznie utworzyć konto Uruchom jako w portalu lub przy użyciu programu PowerShell, zobacz Tworzenie konta Uruchom jako.

Po wykonaniu tych kroków należy skonfigurować ustawienia diagnostyczne dla konta usługi Automation w celu wysyłania stanu zadania elementu Runbook i strumieni zadań do połączonego obszaru roboczego usługi Log Analytics.

Wersje interfejsu API

W poniższej tabeli wymieniono wersję interfejsu API dla zasobów używanych w tym przykładzie.

Zasób Typ zasobu Wersja interfejsu API
Workspace obszary robocze 2020-03-01-preview
Konto usługi Automation automatyzacja 2020-01-13-preview
Połączone usługi obszaru roboczego obszary robocze 2020-03-01-preview
Rozwiązania rozwiązania 2015-11-01-preview

Przed użyciem szablonu

Szablon JSON jest skonfigurowany pod kątem monitowania o:

  • Nazwa obszaru roboczego.
  • Region do utworzenia obszaru roboczego.
  • Nazwa konta usługi Automation.
  • Region, w którym ma zostać utworzone konto usługi Automation.

Następujące parametry w szablonie są ustawiane z wartością domyślną dla obszaru roboczego usługi Log Analytics:

  • Jednostka SKU jest domyślnie ustawiona na warstwę cenową na GB wydaną w modelu cenowym z kwietnia 2018 r.
  • Wartość domyślna dataRetention to 30 dni.

Ostrzeżenie

Jeśli chcesz utworzyć lub skonfigurować obszar roboczy usługi Log Analytics w subskrypcji, która zdecydowała się na model cenowy z kwietnia 2018 r., jedyną prawidłową warstwą cenową usługi Log Analytics jest PerGB2018.

Szablon JSON określa wartość domyślną dla innych parametrów, które prawdopodobnie będą używane jako standardowa konfiguracja w danym środowisku. Szablon można przechowywać na koncie usługi Azure Storage na potrzeby dostępu współdzielonego w organizacji. Aby uzyskać więcej informacji na temat pracy z szablonami, zobacz Wdrażanie zasobów przy użyciu szablonów usługi ARM i interfejsu wiersza polecenia platformy Azure.

Jeśli dopiero zaczynasz korzystać z usług Azure Automation i Azure Monitor, ważne jest, aby zrozumieć następujące szczegóły konfiguracji. Mogą one pomóc uniknąć błędów podczas próby utworzenia, skonfigurowania i użycia obszaru roboczego usługi Log Analytics połączonego z nowym kontem usługi Automation.

  • Przejrzyj dodatkowe szczegóły , aby w pełni zrozumieć opcje konfiguracji obszaru roboczego, takie jak tryb kontroli dostępu, warstwa cenowa, przechowywanie i poziom rezerwacji pojemności.

  • Przejrzyj mapowania obszarów roboczych , aby określić obsługiwane regiony w tekście lub w pliku parametrów. Tylko niektóre regiony są obsługiwane w przypadku łączenia obszaru roboczego usługi Log Analytics i konta usługi Automation w ramach subskrypcji.

  • Jeśli dopiero zaczynasz korzystać z dzienników usługi Azure Monitor i nie wdrożono jeszcze obszaru roboczego, zapoznaj się ze wskazówkami dotyczącymi projektowania obszaru roboczego. Pomoże Ci to dowiedzieć się więcej na temat kontroli dostępu i zrozumieć strategie implementacji projektu, które zalecamy dla Twojej organizacji.

Wdrażanie szablonu

  1. Skopiuj i wklej następującą składnię JSON do pliku:

    {
      "$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. Edytuj szablon, aby spełnić wymagania. Rozważ utworzenie pliku parametrów usługi Resource Manager zamiast przekazywania parametrów jako wartości wbudowanych.

  3. Zapisz ten plik w folderze lokalnym jako deployUMSolutiontemplate.json.

  4. Wszystko jest teraz gotowe do wdrożenia tego szablonu. Możesz użyć programu PowerShell lub interfejsu wiersza polecenia platformy Azure. Po wyświetleniu monitu o podanie obszaru roboczego i nazwy konta usługi Automation podaj nazwę, która jest globalnie unikatowa we wszystkich subskrypcjach platformy Azure.

    Program 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"
    

    Interfejs wiersza polecenia platformy Azure

    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"
    

    Wdrożenie może potrwać kilka minut. Po zakończeniu zostanie wyświetlony komunikat podobny do następującego, który zawiera wynik:

    Example result when deployment is complete

Przeglądanie wdrożonych zasobów

  1. Zaloguj się w witrynie Azure Portal.

  2. W witrynie Azure Portal otwórz utworzone konto usługi Automation.

  3. W okienku po lewej stronie wybierz pozycję Elementy Runbook. Na stronie Elementy Runbook wymienione są trzy elementy Runbook samouczka utworzone przy użyciu konta usługi Automation.

    Tutorial runbooks created with Automation account

  4. W okienku po lewej stronie wybierz pozycję Połączony obszar roboczy. Na stronie Połączony obszar roboczy jest wyświetlany określony wcześniej obszar roboczy usługi Log Analytics połączony z kontem usługi Automation.

    Automation account linked to the Log Analytics workspace

  5. W okienku po lewej stronie wybierz pozycję Update Management. Na stronie Update Management jest wyświetlana strona oceny bez żadnych informacji w wyniku włączenia usługi , a maszyny nie są skonfigurowane do zarządzania.

    Update Management feature assessment view

Czyszczenie zasobów

Jeśli nie są już potrzebne, usuń rozwiązanie Aktualizacje w obszarze roboczym usługi Log Analytics, odłącz konto usługi Automation z obszaru roboczego, a następnie usuń konto usługi Automation i obszar roboczy.

Następne kroki