كيفية إدارة التحديثات برمجيا لأجهزة Azure الظاهرية

ترشدك هذه المقالة خلال عملية استخدام Azure REST API لتشغيل تقييم ونشر تحديث على جهاز Azure الظاهري باستخدام Azure Update Manager في Azure. إذا كنت مستخدما جديدا ل Update Manager وتريد معرفة المزيد، فشاهد نظرة عامة على Azure Update Manager. لاستخدام Azure REST API لإدارة الخوادم الممكنة بواسطة Arc، راجع كيفية العمل برمجيا مع الخوادم الممكنة بواسطة Arc.

يمكنك Azure Update Manager في Azure من استخدام Azure REST API للوصول برمجيا. بالإضافة إلى ذلك، يمكنك استخدام أوامر REST المناسبة من Azure PowerShell وAzure CLI.

يتوفر دعم Azure REST API لإدارة أجهزة Azure الظاهرية من خلال ملحق الجهاز الظاهري ل Update Manager.

تقييم التحديث

لتشغيل تقييم تحديث على جهاز Azure الظاهري، حدد طلب POST التالي:

POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.Compute/virtualMachines/virtualMachineName/assessPatches?api-version=2020-12-01`

لتحديد طلب POST، يمكنك استخدام الأمر Azure CLI az vm assess-patches .

az vm assess-patches -g MyResourceGroup -n MyVm

تحديث النشر

لتشغيل نشر تحديث إلى جهاز Azure الظاهري، حدد طلب POST التالي:

POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.Compute/virtualMachines/virtualMachineName/installPatches?api-version=2020-12-01`

نص الطلب

يصف الجدول التالي عناصر نص الطلب:

الخاصية ‏‏الوصف
maximumDuration الحد الأقصى لمقدار الوقت الذي يتم فيه تشغيل العملية. يجب أن تكون سلسلة مدة متوافقة مع ISO 8601 مثل PT4H (4 ساعات).
rebootSetting ضع علامة لتحديد ما إذا كان يجب إعادة تشغيل الجهاز وإذا كان تثبيت تحديث Guest OS يتطلب إكماله. القيم المقبولة هي: IfRequired, NeverReboot, AlwaysReboot.
windowsParameters خيارات المعلمات لتحديث نظام التشغيل الضيف على أجهزة Azure الظاهرية التي تعمل بنظام تشغيل Microsoft Windows Server مدعوم.
windowsParameters - classificationsToInclude قائمة الفئات/التصنيفات التي سيتم استخدامها لتحديد التحديثات التي سيتم تثبيتها على الجهاز. القيم المقبولة هي: Critical, Security, UpdateRollUp, FeaturePack, ServicePack, Definition, Tools, Updates
windowsParameters - kbNumbersToInclude قائمة بمعرفات كيلوبايت Windows Update التي يجب تثبيتها. سيتم تثبيت جميع التحديثات التي تنتمي إلى التصنيفات المقدمة في classificationsToInclude القائمة. kbNumbersToIncludeهي قائمة اختيارية من كيلوبايت محددة ليتم تثبيتها بالإضافة إلى التصنيفات. على سبيل المثال: 1234
windowsParameters - kbNumbersToExclude قائمة بمعرفات كيلوبايت Windows Update التي يجب عدم تثبيتها. تتجاوز هذه المعلمة windowsParameters - classificationsToInclude، ما يعني أن معرف windows Update كيلوبايت المحدد هنا لن يتم تثبيته حتى إذا كان ينتمي إلى التصنيف المقدم ضمن classificationsToInclude المعلمة .
maxPatchPublishDate يتم استخدام هذا لتثبيت التصحيحات التي تم نشرها في أو قبل تاريخ النشر الأقصى المحدد هذا.
linuxParameters خيارات المعلمة لتحديث نظام التشغيل الضيف على أجهزة Azure الظاهرية التي تعمل بنظام تشغيل خادم Linux مدعوم.
linuxParameters - classificationsToInclude قائمة الفئات/التصنيفات التي سيتم استخدامها لتحديد التحديثات التي سيتم تثبيتها على الجهاز. القيم المقبولة هي: Critical, Security, Other
linuxParameters - packageNameMasksToInclude قائمة حزم Linux التي يجب تثبيتها. سيتم تثبيت جميع التحديثات التي تنتمي إلى التصنيفات المقدمة في classificationsToInclude القائمة. packageNameMasksToInclude هي قائمة اختيارية بأسماء الحزم التي سيتم تثبيتها بالإضافة إلى التصنيفات. على سبيل المثال: mysql, libc=1.0.1.1, kernel*
linuxParameters - packageNameMasksToExclude قائمة التحديثات التي يجب عدم تثبيتها. تتجاوز هذه المعلمة linuxParameters - packageNameMasksToExclude، ما يعني أن الحزمة المحددة هنا لن يتم تثبيتها حتى إذا كانت تنتمي إلى التصنيف المقدم ضمن classificationsToInclude المعلمة.

لتحديد طلب POST، يمكنك استخدام استدعاء Azure REST API التالي مع معلمات وقيم صالحة.

POST on 'subscriptions/{subscriptionId}/resourceGroups/acmedemo/providers/Microsoft.Compute/virtualMachines/ameacr/installPatches?api-version=2020-12-01

{
    "maximumDuration": "PT120M",
    "rebootSetting": "IfRequired",
    "windowsParameters": {
      "classificationsToInclude": [
        "Security",
        "UpdateRollup",
        "FeaturePack",
        "ServicePack"
      ],
      "kbNumbersToInclude": [
        "11111111111",
        "22222222222222"
      ],
      "kbNumbersToExclude": [
        "333333333333",
        "55555555555"
      ]
    }
  }'

إنشاء جدول تكوين الصيانة

لإنشاء جدول تكوين صيانة، حدد طلب PUT التالي:

PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Maintenance/maintenanceConfigurations/<maintenanceConfigurationsName>?api-version=2021-09-01-preview`

نص الطلب

يصف الجدول التالي عناصر نص الطلب:

الخاصية ‏‏الوصف
id معرف مؤهل بالكامل للمورد
location الحصول على موقع المورد أو تعيينه
name اسم المورد
properties.extensionProperties الحصول على خصائص ملحق تكوين الصيانة أو تعيينها
properties.maintenanceScope الحصول على أو تعيين maintenanceScope للتكوين
properties.maintenanceWindow.duration مدة نافذة الصيانة بتنسيق HH:MM. إذا لم يتم توفيرها، يتم استخدام القيمة الافتراضية استنادا إلى نطاق الصيانة المقدم. مثال: 05:00.
properties.maintenanceWindow.expirationDateTime تاريخ انتهاء الصلاحية الفعلي لنافذة الصيانة بتنسيق YYYY-MM-DD hh:mm. يتم إنشاء النافذة في المنطقة الزمنية المقدمة إلى التوقيت الصيفي وفقا لتلك المنطقة الزمنية. يجب تعيين تاريخ انتهاء الصلاحية إلى تاريخ مستقبلي. إذا لم يتم توفيره، يتم تعيينه إلى الحد الأقصى للتاريخ 9999-12-31 23:59:59.
properties.maintenanceWindow.recurEvery معدل تكرار نافذة الصيانة. يمكن التعبير عن السعر كجداول يومية أو أسبوعية أو شهرية. يتم تنسيق الجداول اليومية على أنها recurEvery: [Frequency as integer]['Day(s)']. إذا لم يتم توفير أي تردد، يكون التردد الافتراضي هو 1. أمثلة الجدول اليومي هي recurEvery: Day, recurEvery: 3Days. يتم تنسيق الجداول الأسبوعية على أنها recurEvery: [Frequency as integer]['Week(s)'] [اختياري قائمة مفصولة بفواصل من أيام الأسبوع من الاثنين إلى الأحد]. أمثلة الجدول الأسبوعي هي recurEvery: 3Weeks، recurEvery: Week السبت، الأحد. يتم تنسيق الجداول الشهرية ك [Frequency as integer]['Month(s)'] [Comma separated list of month days] or [Frequency as integer]['Month(s)'] [Week of Month (First, Second, Third, Fourth, Last)] [Weekday Monday-Sunday]. أمثلة الجدول الشهري هي recurEvery: Month, recurEvery: 2Months, recurEvery: Month day23, day24, recurEvery: Month Last الأحد, recurEvery: Month Fourth Monday.
properties.maintenanceWindow.startDateTime تاريخ البدء الفعلي لنافذة الصيانة بتنسيق YYYY-MM-DD hh:mm. يمكنك تعيين تاريخ البدء إلى التاريخ الحالي أو التاريخ المستقبلي. سيتم إنشاء النافذة في المنطقة الزمنية المقدمة وتعديلها حسب التوقيت الصيفي وفقا لتلك المنطقة الزمنية.
properties.maintenanceWindow.timeZone اسم المنطقة الزمنية. يمكن الحصول على قائمة بفواصل الوقت عن طريق تنفيذ [System.TimeZoneInfo]:GetSystemTimeZones() في PowerShell. مثال: توقيت المحيط الهادئ القياسي، التوقيت العالمي المتفق عليه، التوقيت القياسي لأوروبا، توقيت كوريا الرسمي، Cen. توقيت أستراليا الرسمي.
properties.namespace الحصول على مساحة اسم المورد أو تعيينها
properties.visibility الحصول على رؤية التكوين أو تعيينها. القيمة الافتراضية هي "مخصص"
systemData بيانات تعريف Azure Resource Manager التي تحتوي على معلومات createBy و modifiedBy.
tags الحصول على علامات المورد أو تعيينها
type نوع المورد

لتحديد طلب POST، يمكنك استخدام استدعاء Azure REST API التالي مع معلمات وقيم صالحة.

PUT on '/subscriptions/0f55bb56-6089-4c7e-9306-41fb78fc5844/resourceGroups/atscalepatching/providers/Microsoft.Maintenance/maintenanceConfigurations/TestAzureInGuestAdv2?api-version=2021-09-01-preview

{
  "location": "eastus2euap",
  "properties": {
    "namespace": null,
    "extensionProperties": {
      "InGuestPatchMode" : "User"
    },
    "maintenanceScope": "InGuestPatch",
    "maintenanceWindow": {
      "startDateTime": "2021-08-21 01:18",
      "expirationDateTime": "2221-05-19 03:30",
      "duration": "01:30",
      "timeZone": "India Standard Time",
      "recurEvery": "Day"
    },
    "visibility": "Custom",
    "installPatches": {
      "rebootSetting": "IfRequired",
      "windowsParameters": {
        "classificationsToInclude": [
          "Security",
          "Critical",
          "UpdateRollup"
        ]
      },
      "linuxParameters": {
        "classificationsToInclude": [
          "Other"
        ]
      }
    }
  }
}'

إقران جهاز ظاهري بجدول زمني

لربط جهاز ظاهري بجدول تكوين الصيانة، حدد طلب PUT التالي:

PUT on `<ARC or Azure VM resourceId>/providers/Microsoft.Maintenance/configurationAssignments/<configurationAssignment name>?api-version=2021-09-01-preview`

لتحديد طلب PUT، يمكنك استخدام استدعاء Azure REST API التالي مع معلمات وقيم صالحة.

PUT on '/subscriptions/0f55bb56-6089-4c7e-9306-41fb78fc5844/resourceGroups/atscalepatching/providers/Microsoft.Compute/virtualMachines/win-atscalepatching-1/providers/Microsoft.Maintenance/configurationAssignments/TestAzureInGuestAdv?api-version=2021-09-01-preview

{
  "properties": {
    "maintenanceConfigurationId": "/subscriptions/0f55bb56-6089-4c7e-9306-41fb78fc5844/resourcegroups/atscalepatching/providers/Microsoft.Maintenance/maintenanceConfigurations/TestAzureInGuestIntermediate2"
  },
  "location": "eastus2euap"
}'

إزالة الجهاز من الجدول

لإزالة جهاز من الجدول، احصل على جميع أسماء تعيينات التكوين للجهاز الذي تم إنشاؤه لربط الجهاز بالجدول الحالي من Azure Resource Graph كما هو مدرج:

maintenanceresources
| where type =~ "microsoft.maintenance/configurationassignments"
| where properties.maintenanceConfigurationId =~ "<maintenance configuration Resource ID>"
| where properties.resourceId =~ "<Machine Resource Id>"
| project name, id

بعد الحصول على الاسم من أعلاه، احذف تعيين التكوين باتباع طلب DELETE -

DELETE on `<ARC or Azure VM resourceId>/providers/Microsoft.Maintenance/configurationAssignments/<configurationAssignment name>?api-version=2021-09-01-preview`

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