كيفية إنشاء التعريفات المخصصة لنهج تكوين الجهاز
قبل البدء، من الجيد قراءة صفحة النظرة العامة لتكوين الجهاز، وتفاصيل حول خيارات معالجة تكوين الجهاز.
هام
ملحق تكوين الجهاز مطلوب لأجهزة 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
، ،ApplyAndAutoCorrect
Audit
) اختر ما إذا كان يجب على النهج تدقيق التكوين أو نشره. الافتراضي هو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 فقط، يرفض الملحق حزمة المحتوى.
أسهل طريقة لإصدار حزمة محدثة هي تكرار العملية الموضحة في هذه المقالة وتحديد رقم إصدار محدث. تضمن هذه العملية تحديث جميع الخصائص بشكل صحيح.
الخطوات التالية
- عيّن تعريف نهج مخصص باستخدام مدخل Microsoft Azure.
- تعرف على كيفية عرض تفاصيل التوافق لتعيينات نهج تكوين الجهاز.