كيفية إنشاء التعريفات المخصصة لنهج تكوين الجهاز

قبل البدء، من الجيد قراءة صفحة النظرة العامة لتكوين الجهاز، وتفاصيل حول خيارات معالجة تكوين الجهاز.

هام

ملحق تكوين الجهاز مطلوب لأجهزة Azure الظاهرية. لتوزيع الملحق على نطاق واسع عبر جميع الأجهزة، عيّن مبادرة النهج التالية: Deploy prerequisites to enable machine configuration policies on virtual machines

لاستخدام حزم تكوين الجهاز التي تطبق التكوينات، يلزم إصدار ملحق تكوين ضيف Azure VM 1.26.24 أو أحدث، أو عامل Arc 1.10.0 أو أحدث.

تعريفات نهج تكوين الجهاز المخصصة باستخدام إما AuditIfNotExists أو DeployIfNotExists في حالة دعم متوفر بشكل عام (GA).

استخدم الخطوات التالية لإنشاء النُهج الخاصة بك التي تقوم بتدقيق التوافق أو إدارة حالة Azure أو الأجهزة التي تدعم Arc.

قم بتثبيت PowerShell 7 ووحدات PowerShell النمطية المطلوبة

أولا، قم بإعداد بيئة تأليف تكوين الجهاز لتثبيت الإصدار المطلوب من PowerShell لنظام التشغيل الخاص بك والوحدة النمطية GuestConfiguration .

قم بإنشاء ونشر حزمة تكوين الجهاز

إذا لم تكن قد قمت بالفعل بإنشاء حزمة تكوين جهاز مخصصة ونشرها باتباع الخطوات الواردة في كيفية إنشاء عناصر حزمة تكوين الجهاز المخصصة. ثم تحقق من صحة الحزمة في بيئة التطوير الخاصة بك باتباع الخطوات الواردة في كيفية اختبار البيانات الاصطناعية لحزمة تكوين الجهاز.

إشعار

يشير مثال التعليمات البرمجية $contentUri في هذه المقالة إلى المتغير. إذا كنت تستخدم نفس جلسة عمل PowerShell مثل البرامج التعليمية السابقة لإنشاء واختبار البيانات الاصطناعية للحزمة الخاصة بك، فقد يحتوي هذا المتغير بالفعل على URI لحزمتك.

إذا لم يكن لديك $contentUri المتغير المعين إلى URI لحزمتك في جلسة عمل PowerShell، فستحتاج إلى تعيينه. يستخدم هذا المثال سلسلة الاتصال حساب التخزين وcmdlet New-AzStorageContext لإنشاء سياق تخزين. ثم يحصل على الكائن الثنائي كبير الحجم للتخزين للحزمة المنشورة ويستخدم خصائص هذا الكائن للحصول على URI للمحتوى.

$connectionString = '<storage-account-connection-string>'
$context = New-AzStorageContext -ConnectionString $connectionString
$getParams = @{
    Context   = $context
    Container = '<container-name>'
    Blob      = '<published-package-file-name>'
}
$blob = Get-AzStorageBlob @getParams
$contentUri = $blob.ICloudBlob.Uri.AbsoluteUri

متطلبات النهج لتكوين الجهاز

يجب أن يتضمن قسم بيانات تعريف النهج خاصيتين لخدمة تكوين الجهاز لأتمتة توفير تعيينات تكوين الضيف والإبلاغ عنها. يجب تعيين خاصية الفئة إلى Guest Configuration ويجب أن يحتوي قسم يسمى guestConfiguration على معلومات حول تعيين تكوين الجهاز. يقوم الأمر New-GuestConfigurationPolicy بإنشاء هذا النص تلقائياً.

يوضح المثال التالي قسم بيانات التعريف الذي تم إنشاؤه تلقائيا بواسطة New-GuestConfigurationPolicy.

"metadata": {
    "category": "Guest Configuration",
    "guestConfiguration": {
        "name": "test",
        "version": "1.0.0",
        "contentType": "Custom",
        "contentUri": "CUSTOM-URI-HERE",
        "contentHash": "CUSTOM-HASH-VALUE-HERE",
        "configurationParameter": {}
    }
}

إذا تم تعيين تأثير التعريف إلى DeployIfNotExists، فيجب أن يحتوي القسم على تفاصيل النشر حول تعيين تكوين الجهاز. يقوم الأمر New-GuestConfigurationPolicy بإنشاء هذا النص تلقائياً.

قم بإنشاء تعريف Azure Policy

بمجرد إنشاء حزمة النهج المخصصة لتكوين الجهاز وتحميلها، قم بإنشاء تعريف نهج تكوين الجهاز. يأخذ الأمر New-GuestConfigurationPolicy cmdlet حزمة نهج مخصصة ويقوم بإنشاء تعريف نهج.

تتطلب معلمة PolicyId لـ New-GuestConfigurationPolicy سلسلة فريدة. مطلوب استخدام معرّف فريد عالميًا (GUID). بالنسبة للتعريفات الجديدة، قم بإنشاء GUID جديد باستخدام New-GUID cmdlet. عند إجراء تحديثات على التعريف، استخدم نفس السلسلة الفريدة لـ PolicyId لضمان تحديث التعريف الصحيح.

معلمات New-GuestConfigurationPolicy cmdlet:

  • PolicyId: A GUID.
  • ContentUri: عنوان URL لـ HTTP (s) العام لحزمة محتوى تكوين الجهاز.
  • DisplayName: اسم عرض النهج.
  • الوصف: وصف النهج.
  • المعلمة: معلمات النهج المتوفرة في جدول التجزئة.
  • PolicyVersion: إصدار النهج.
  • Path: مسار الوجهة حيث يتم إنشاء تعريفات النهج.
  • النظام الأساسي: النظام الأساسي المستهدف (Windows/Linux) لنهج تكوين الجهاز وحزمة المحتوى.
  • الوضع: (حساس لحالة الأحرف: ApplyAndMonitor، ، ApplyAndAutoCorrectAudit) اختر ما إذا كان يجب على النهج تدقيق التكوين أو نشره. الافتراضي هو Audit.
  • تضيفالعلامة واحداً أو أكثر من عوامل تصفية العلامات إلى تعريف النهج
  • Category تعين حقل بيانات التعريف للفئة في تعريف النهج

لمزيد من المعلومات حول معلمة الوضع ، راجع الصفحة كيفية تكوين خيارات المعالجة لتكوين الجهاز.

قم بإنشاء تعريف نهج يقوم بالتدقيق باستخدام حزمة تكوين مخصصة، في مسار محدد:

$PolicyConfig      = @{
  PolicyId      = '_My GUID_'
  ContentUri    = $contentUri
  DisplayName   = 'My audit policy'
  Description   = 'My audit policy'
  Path          = './policies/auditIfNotExists.json'
  Platform      = 'Windows'
  PolicyVersion = 1.0.0
}

New-GuestConfigurationPolicy @PolicyConfig

قم بإنشاء تعريف نهج يوزع تكويناً باستخدام حزمة تكوين مخصصة، في مسار محدد:

$PolicyConfig2      = @{
  PolicyId      = '_My GUID_'
  ContentUri    = $contentUri
  DisplayName   = 'My deployment policy'
  Description   = 'My deployment policy'
  Path          = './policies/deployIfNotExists.json'
  Platform      = 'Windows'
  PolicyVersion = 1.0.0
  Mode          = 'ApplyAndAutoCorrect'
}

New-GuestConfigurationPolicy @PolicyConfig2

يُرجع إخراج cmdlet عنصراً يحتوي على اسم عرض التعريف ومسار ملفات النهج. تعريف ملفات JSON التي تنشئ تعريفات نهج التدقيق لها الاسم auditIfNotExists.json والملفات التي تنشئ تعريفات النهج لتطبيق التكوينات لها الاسم deployIfNotExists.json.

تصفية نُهج تكوين الجهاز باستخدام العلامات

يمكن أن تتضمن تعريفات النهج التي تم إنشاؤها بواسطة cmdlets في الوحدة النمطية GuestConfiguration اختياريا عامل تصفية للعلامات. تدعم معلمة New-GuestConfigurationPolicy Tag صفيفا من جداول التجزئة التي تحتوي على إدخالات علامات فردية. تتم إضافة العلامات إلى قسم if من تعريف النهج ولا يمكن تعديلها بواسطة تعيين نهج.

فيما يلي مثال على قصاصة برمجية لتعريف نهج يقوم بتصفية العلامات.

"if": {
  "allOf" : [
    {
      "allOf": [
        {
          "field": "tags.Owner",
          "equals": "BusinessUnit"
        },
        {
          "field": "tags.Role",
          "equals": "Web"
        }
      ]
    },
    {
      // Original machine configuration content
    }
  ]
}

استخدام المعلمات في تعريفات نهج تكوين الجهاز المخصصة

يدعم تكوين الجهاز تجاوز خصائص تكوين DSC في وقت التشغيل. تعني هذه الميزة أن القيم الموجودة في ملف MOF في الحزمة لا يجب اعتبارها ثابتة. يتم توفير قيم التجاوز من خلال نهج Azure ولا تغير كيفية تأليف تكوينات DSC أو تجميعها.

يدعم تكوين الجهاز أنواع القيم التالية للمعلمات:

  • السلسلة‬
  • Boolean
  • مزدوج
  • Float

تتضمن أوامر cmdlets New-GuestConfigurationPolicy وGet-GuestConfigurationPackageComplianceStatus معلمة باسم Parameter. تأخذ هذه المعلمة تعريف جدول تجزئة بما في ذلك جميع التفاصيل حول كل معلمة وتنشئ الأقسام المطلوبة من كل ملف مستخدم لتعريف نهج Azure.

ينشئ المثال التالي تعريف نهج لتدقيق خدمة، حيث يختار المستخدم من قائمة في وقت تعيين النهج.

# This DSC resource definition...
Service 'UserSelectedNameExample' {
    Name   = 'ParameterValue'
    Ensure = 'Present'
    State  = 'Running'
}

# ...can be converted to a hash table:
$PolicyParameterInfo     = @(
  @{
    # Policy parameter name (mandatory)
    Name                 = 'ServiceName'
    # Policy parameter display name (mandatory)
    DisplayName          = 'windows service name.'
    # Policy parameter description (optional)
    Description          = 'Name of the windows service to be audited.'
    # DSC configuration resource type (mandatory)
    ResourceType         = 'Service'
    # DSC configuration resource id (mandatory)
    ResourceId           = 'UserSelectedNameExample'
    # DSC configuration resource property name (mandatory)
    ResourcePropertyName = 'Name'
    # Policy parameter default value (optional)
    DefaultValue         = 'winrm'
    # Policy parameter allowed values (optional)
    AllowedValues        = @('BDESVC','TermService','wuauserv','winrm')
  })

# ...and then passed into the `New-GuestConfigurationPolicy` cmdlet
$PolicyParam = @{
  PolicyId      = 'My GUID'
  ContentUri    = $contentUri
  DisplayName   = 'Audit Windows Service.'
  Description   = "Audit if a Windows Service isn't enabled on Windows machine."
  Path          = '.\policies\auditIfNotExists.json'
  Parameter     = $PolicyParameterInfo
  PolicyVersion = 1.0.0
}

New-GuestConfigurationPolicy @PolicyParam

انشر تعريف Azure Policy

وأخيرا، يمكنك نشر تعريفات النهج باستخدام New-AzPolicyDefinition cmdlet. تنشر الأوامر أدناه نهج تكوين الجهاز الخاص بك إلى مركز النهج.

لتشغيل New-AzPolicyDefinition الأمر، تحتاج إلى الوصول لإنشاء تعريفات النهج في Azure. تم توثيق متطلبات المصادقة المحددة في صفحة Azure Policy Overview. الدور المضمن الموصى به هو Resource Policy Contributor.

New-AzPolicyDefinition -Name 'mypolicydefinition' -Policy '.\policies\auditIfNotExists.json'

أو، إذا كان النهج عبارة عن نهج نشر إن لم يكن موجودا (DINE)، فاستخدم هذا الأمر:

New-AzPolicyDefinition -Name 'mypolicydefinition' -Policy '.\policies\deployIfNotExists.json'

مع تعريف النهج الذي تم إنشاؤه في Azure، فإن الخطوة الأخيرة هي تعيين التعريف. تعرف على كيفية تعيين التعريف باستخدام Portalو Azure CLIو Azure PowerShell.

دورة حياة النهج

إذا كنت ترغب في إصدار تحديث لتعريف النهج، فقم بإجراء التغيير لكل من حزمة تكوين الضيف وتفاصيل تعريف Azure Policy.

إشعار

تؤثر الخاصية version لتعيين تكوين الجهاز فقط على الحزم التي تستضيفها Microsoft. أفضل ممارسة لإصدار محتوى مخصص هي تضمين الإصدار في اسم الملف.

أولا، عند تشغيل New-GuestConfigurationPackage، حدد اسما للحزمة التي تجعلها فريدة من نوعها من الإصدارات السابقة. يمكنك تضمين رقم إصدار في الاسم مثل PackageName_1.0.0. الرقم في هذا المثال يُستخدم فقط لجعل الحزمة فريدة، وليس لتحديد أن الحزمة يجب اعتبارها أحدث أو أقدم من الحزم الأخرى.

ثانياً، قم بتحديث المعلمات المستخدمة مع New-GuestConfigurationPolicy cmdlet بعد كل من التفسيرات التالية.

  • الإصدار: عند تشغيل New-GuestConfigurationPolicy cmdlet، يجب تحديد رقم إصدار أكبر مما هو منشور حاليا.
  • contentUri: عند تشغيل New-GuestConfigurationPolicy cmdlet، يجب عليك تحديد URI لموقع الحزمة. يضمن تضمين إصدار حزمة في اسم الملف تغيير قيمة هذه الخاصية في كل إصدار.
  • contentHash: يقوم New-GuestConfigurationPolicy cmdlet بتحديث هذه الخاصية تلقائيا. إنها قيمة تجزئة للحزمة التي تم إنشاؤها بواسطة New-GuestConfigurationPackage. يجب أن تكون الخاصية صحيحة لملف .zip الذي تنشره. إذا تم تحديث خاصية contentUri فقط، يرفض الملحق حزمة المحتوى.

أسهل طريقة لإصدار حزمة محدثة هي تكرار العملية الموضحة في هذه المقالة وتحديد رقم إصدار محدث. تضمن هذه العملية تحديث جميع الخصائص بشكل صحيح.

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