إنشاء حساب Azure Automation باستخدام قالب إدارة الموارد

توفر Azure Automation خدمة أتمتة وتكوين استناداً إلى السحابة تدعم الإدارة المتسقة عبر Azure and non-Azure environments. توضح هذه المقالة كيفية نشر قالب إدارة موارد Azure (قالب ARM) الذي يقوم بإنشاء حساب Automation. استخدام قالب ARM يأخذ خطوات أقل مقارنة بأساليب التوزيع الأخرى. يحدد قالب JSON القيم الافتراضية للمعلمات التي من المحتمل أن يتم استخدامها كتهيئة قياسية في البيئة الخاصة بك. يمكنك تخزين القالب في حساب تخزين Azure للوصول المشترك في مؤسستك. لمزيد من المعلومات حول العمل مع القوالب، راجع نشر الموارد باستخدام قوالب ARM وAzure CLI.

قالب Azure Resource Manager هو ملف JavaScript Object Notation (JSON) الذي يحدد البنية الأساسية والتكوين لمشروعك. يستخدم القالب عبارات توضيحية. يمكنك وصف النشر المقصود دون كتابة تسلسل أوامر البرمجة لإنشاء النشر.

يقوم نموذج القالب بالخطوات التالية:

  • أتمتة إنشاء مساحة عمل Azure Monitor Log Analytics.
  • أتمتة إنشاء حساب Azure Automation.
  • يربط حساب Automation بمساحة عملLog Analytics.
  • إضافة نماذج من دفاتر تشغيل Automation إلى الحساب.

في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.

المتطلبات الأساسية

إذا كنت جديدًا على Azure Automation وAzure Monitor، فمن المهم أن تفهم تفاصيل التكوين. يمكن أن يساعدك الفهم على تجنب الأخطاء عند محاولة إنشاء مساحة عمل Log Analytics وتكوينها واستخدامها المرتبط بحساب Automation الجديد.

  • راجعالتفاصيل الإضافية لفهم خيارات تكوين مساحة العمل بشكل كامل، مثل وضع التحكم في الوصول، ومستوى التسعير، والاحتفاظ، ومستوى حجز السعة.

  • مراجعة تعيينات مساحة العمل لتحديد المناطق المعتمدة المضمنة أو في ملف معلمة. يتم دعم مناطق معينة فقط لربط مساحة عمل Log Analytics وحساب Automation في اشتراكك.

  • إذا كنت جديدًا على Azure Monitor Logs ولم تقم بنشر مساحة عمل بالفعل، فراجع إرشادات تصميم مساحة العمل. سيساعدك هذا المستند في التعرف على التحكم في الوصول، ويساعدك على فهم استراتيجيات تنفيذ التصميم الموصى بها لمؤسستك.

مراجعة القالب

يُعَد النموذج المستخدم في هذا التشغيل السريع مأخوذًا من نماذج Azure Quickstart.

{
  "$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'))]"
      }
    }
  ]
}

موارد Azure المعرفة في القالب:

نشر القالب

  1. حدد زر النشر إلى Azure أدناه لتسجيل الدخول إلى Azure وافتح قالب ARM.

    Button to deploy the Resource Manager template to Azure.

  2. أدخل أو حدد القيم التالية:

    الخاصية ‏‏الوصف
    الاشتراك من القائمة المنسدلة، حدد اشتراك Azure.
    مجموعة الموارد من القائمة المنسدلة، حدد مجموعة الموارد الموجودة، أو تحديد إنشاء جديد.
    المنطقة سيتم ملء هذه القيمة تلقائيا.
    اسم مساحة العمل أدخل اسمًا لمساحة عمل Log Analytics الجديدة.
    Sku الافتراضات إلى مستوى التسعير لكل غيغابايت تم إصدارها في نموذج التسعير في أبريل 2018. إذا كنت ترغب في إنشاء مساحة عملLog Analytics أو تكوينها في اشتراك تم اختياره في نموذج التسعير في أبريل 2018، فإن مستوى التسعير تحليلات السجل الصالح الوحيد هوPerGB2018.
    الاحتفاظ بالبيانات الافتراضيات إلى 30 يوما.
    الموقع سيتم ملء القيمة تلقائيًا بالموقع المستخدم لمجموعة الموارد.
    اسم حساب Automation أدخل اسمًا لحساب Automation الجديد.
    عينة اسم دفتر التشغيل الرسومي اتركه كما هو.
    نموذج وصف دفتر التشغيل الرسومي اتركه كما هو.
    نموذج اسم دفتر تشغيل PowerShell اتركه كما هو.
    نموذج وصف دفتر تشغيل PowerShell اتركه كما هو.
    عينة اسم Python2Runbook اتركه كما هو.
    نموذج وصف Python2Runbook اتركه كما هو.
    _artifacts Location اتركه كما هو. * URI إلى موقع القطع الأثرية.
    رمز Sas لموقع البيانات الاصطناعية اترك فراغاً. الرمز المميز sasToken المطلوب للوصول_artifactsLocation. عند نشر القالب باستخدام البرامج النصية المصاحبة، سيتم إنشاء sasTokenتلقائيًا.

    *عند محاولة تشغيل قالب ARM من PowerShell أو CLI أو ميزة القوالب في المدخل، إذا لم يتم تعيين المعلمة _artifactsLocationبشكل صحيح، فستتلقى رسالة خطأ مشابهة لما يلي:

    "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.'."

    لمنع هذا الخطأ، عند التشغيل من ميزة القوالب في المدخل، حدد القيمة التالية _artifactsLocationللمعلمة- https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.automation/101-automation/azuredeploy.json.

    عند تشغيل من PowerShell، قم بتضمين المعلمة وقيمتها -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.automation/101-automation/azuredeploy.json.

    عند تشغيل من PowerShell، قم بتضمين المعلمة وقيمتها --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.automation/101-automation/azuredeploy.json.

    للحصول على مرجع حول PowerShell/CLI، راجع ما يلي - إنشاء حسابAzure Automation(microsoft.com) ضمن المقطع استخدام القالب.

  3. حدد Review + Create ثم Create. قد يستغرق النشر بضع دقائق للانتهاء. عند إنجازه، تكون المخرجات مشابهة للصورة التالية:

    Example result when deployment is complete

مراجعة الموارد الموزعة

  1. بمجرد إنشاء نظام المجموعة، ستتلقى إشعارًا تم التوزيع بنجاح مع رابط الانتقال إلى المورد. ستقوم صفحة مجموعة الموارد بإدراج الموارد الجديدة. من القائمة، حدد حساب Automation الجديد.

  2. ضمن Process Automation، حدد Runbooks. تسرد صفحة Runbooks نماذج ثلاثة من دفاتر التشغيل التي تم إنشاؤها باستخدام حساب Automation.

    Tutorial runbooks created with Automation account

  3. من الجانب الأيمن، ضمن الموارد المرتبطة، حدد مساحة عمل مرتبطة. تعرض صفحة مساحة العمل المرتبطة مساحة عمل Log Analytics التي حددتها سابقًا المرتبطة بحساب Automation.

    Automation account linked to the Log Analytics workspace

الخطوات التالية

تكوين إعدادات التشخيصلحساب Automation لإرسال حالة مهمة دفتر التشغيل وتدفقات الوظائف إلى مساحة عمل Log Analytics المرتبطة.