ملحق Desired State Configuration مع قوالب Azure Resource Manager
إشعار
قبل تمكين ملحق DSC، نود أن تعرف أن إصدارا أحدث من DSC متاح الآن بشكل عام، تتم إدارته بواسطة ميزة تسمى تكوين الجهاز. تتضمن ميزة تكوين الجهاز ميزات معالج ملحق تكوين الحالة المطلوبة (DSC) والميزات الأكثر شيوعا المطلوبة من ملاحظات العملاء. يتضمن تكوين الجهاز أيضا دعم الجهاز المختلط من خلال خوادم Arc الممكنة.
توضح هذه المقالة قالب Azure Resource Manager معالج ملحق تكوين الحالة المطلوبة (DSC).
إشعار
قد ترى أمثلة مخططات مختلفة قليلا. حدث التغيير في المخطط في إصدار أكتوبر 2016. للتفاصيل، يرجى الاطلاع على تحديث من تنسيق سابق.
مثال Bicep لجهاز ظاهري
يرث ملحق DSC خصائص الملحق الافتراضية. لمزيد من المعلومات، راجع فئة VirtualMachineExtension.
@description('URI of the configuration package')
param configUri string
@description('first configuration parameter')
param arg1 string
@description('second configuration parameter')
@secure()
param arg2 string
var configName = split(split(configUri, '/')[4], '.')[0]
resource vm 'Microsoft.Compute/virtualMachines@2023-09-01' existing = {
name: srvName
}
resource configuration_dscext 'Microsoft.Compute/virtualMachines/extensions@2024-07-01' = {
name: 'configurationname_dscext'
parent: vm
location: location
properties: {
publisher: 'Microsoft.Powershell'
type: 'DSC'
typeHandlerVersion: '2.77'
autoUpgradeMinorVersion: true
settings: {
wmfVersion: 'latest'
configuration: {
url: configUri
script: 'configurationname_dscext.ps1'
function: 'configurationname_dscext'
}
configurationArguments: {
arg1: arg1
}
advancedOptions: {
rebootNodeIfNeeded: true
}
}
protectedSettings: {
configurationArguements: {
arg2: arg2
}
}
}
}
مثال Bicep لمجموعات مقياس الجهاز الظاهري ل Windows
تحتوي عقدة مجموعة مقياس الجهاز الظاهري على قسم يتضمن سمة extensionProfile . ضمن الإضافات، أضف تفاصيل ملحق DSC.
للحصول على أحدث التفاصيل حول قوالب التأليف التي تنشر ملحقات لمجموعات مقياس الجهاز الظاهري، راجع المستند Microsoft.Compute virtualMachineScaleSets
يرث ملحق DSC خصائص الملحق الافتراضية. لمزيد من المعلومات، راجع فئة VirtualMachineScaleSetExtension.
الإعدادات مقابل الإعدادات المحمية
يتم حفظ جميع الإعدادات في ملف نصي للإعدادات على الجهاز الظاهري. الخصائص المدرجة ضمن الإعدادات هي خصائص عامة. لا يتم تشفير الخصائص العامة في الملف النصي للإعدادات. يتم تشفير الخصائص المدرجة ضمن protectedSettings بشهادة ولا تظهر بنص عادي في ملف الإعدادات على الجهاز الظاهري.
إذا كان التكوين يحتاج إلى بيانات اعتماد، فيمكنك تضمين بيانات الاعتماد في protectedSettings:
"protectedSettings": {
"configurationArguments": {
"parameterOfTypePSCredential1": {
"userName": "UsernameValue1",
"password": "PasswordValue1"
}
}
}
مثال على استخدام البرنامج النصي للتكوين في Azure Storage
المثال التالي مأخوذ من نظرة عامة على معالج ملحق DSC.
يستخدم هذا المثال قوالب Resource Manager بدلا من cmdlets لتوزيع الملحق.
احفظ تكوين IisInstall.ps1، وضعه في ملف .zip (على سبيل المثال: iisinstall.zip
)، ثم قم بتحميل الملف في عنوان URL يمكن الوصول إليه.
يستخدم هذا المثال تخزين Azure Blob، ولكن يمكنك تنزيل ملفات .zip من أي موقع عشوائي.
في قالب Resource Manager، التعليمة البرمجية التالية ترشد الجهاز الظاهري لتنزيل الملف الصحيح ثم قم بتشغيل دالة PowerShell المناسبة:
"settings": {
"configuration": {
"url": "https://demo.blob.core.windows.net/iisinstall.zip",
"script": "IisInstall.ps1",
"function": "IISInstall"
}
},
"protectedSettings": {
"configurationUrlSasToken": "odLPL/U1p9lvcnp..."
}
التحديث من تنسيق سابق
أي إعدادات في تنسيق سابق من الملحق (والتي تحتوي على الخصائص العامة ModulesUrl أو ModuleSourceأوModuleVersion أو ConfigurationFunction أو SasToken أو Properties) تتكيف تلقائيا مع التنسيق الحالي للإضافة. يشتغلون تماما كما في السابق.
يوضح المخطط التالي الشكل الذي بدا عليه مخطط الإعدادات السابقة:
"settings": {
"WMFVersion": "latest",
"ModulesUrl": "https://UrlToZipContainingConfigurationScript.ps1.zip",
"SasToken": "SAS Token if ModulesUrl points to private Azure Blob Storage",
"ConfigurationFunction": "ConfigurationScript.ps1\\ConfigurationFunction",
"Properties": {
"ParameterToConfigurationFunction1": "Value1",
"ParameterToConfigurationFunction2": "Value2",
"ParameterOfTypePSCredential1": {
"UserName": "UsernameValue1",
"Password": "PrivateSettingsRef:Key1"
},
"ParameterOfTypePSCredential2": {
"UserName": "UsernameValue2",
"Password": "PrivateSettingsRef:Key2"
}
}
},
"protectedSettings": {
"Items": {
"Key1": "PasswordValue1",
"Key2": "PasswordValue2"
},
"DataBlobUri": "https://UrlToConfigurationDataWithOptionalSasToken.psd1"
}
إليك كيفية تكيف التنسيق السابق مع التنسيق الحالي:
اسم الخاصية الحالي | مكافئ المخطط السابق |
---|---|
settings.wmfVersion | settings.wmfVersion |
settings.configuration.url | settings.ModulesUrl |
settings.configuration.script | الجزء الأول من الإعدادات. ConfigurationFunction (قبل \\) |
settings.configuration.function | الجزء الأول من الإعدادات. ConfigurationFunction (قبل \\) |
settings.configuration.module.name | settings.ModuleSource |
settings.configuration.module.version | settings.ModuleVersion |
settings.configurationArguments | settings.Properties |
settings.configurationData.url | protectedSettings.DataBlobUri (بدون رمز SAS) |
settings.privacy.dataCollection | settings.Privacy.dataCollection |
settings.advancedOptions.downloadMappings | settings.AdvancedOptions.DownloadMappings |
protectedSettings.configurationArguments | protectedSettings.Properties |
protectedSettings.configurationUrlSasToken | settings.SasToken |
protectedSettings.configurationDataUrlSasToken | رمز SAS المميز من protectedSettings.DataBlobUri |
استكشاف الأخطاء وإصلاحها
فيما يلي بعض الأخطاء التي قد تواجهها وكيف يمكنك إصلاحها.
قيم غير صالحة
"Privacy.dataCollection هو '{0}'. القيم الوحيدة الممكنة هي "تمكين" و "تعطيل". "WmfVersion هو '{0}'. القيم المُحتملة الوحيدة هي … و"الأحدث".
المشكلة: لا يسمح بالقيمة المقدمة.
الحل: تغيير قيمة غير صالحة إلى قيمة صالحة.
عنوان URL غير صالح
"ConfigurationData.url هو '{0}'. هذا ليس URL صالح" "DataBlobUri هو ''{0}. هذا ليس URL صالح" "Configuration.url هو ''{0}. هذا ليس URL صالح.
المشكلة: عنوان URL المتوفر غير صالح.
الحل: تحقق من جميع عناوين URL المقدمة. تأكد من أن جميع عناوين URL تتحلل إلى مواقع صالحة يمكن للملحق الوصول إليها على الجهاز البعيد.
نوع ConfigurationArgument غير صالح
نوع ConfigurationArgument غير صالح {0}"
المشكلة: لا يمكن حل الخاصية ConfigurationArguments إلى كائن جدول التجزئة.
الحل: اجعل خاصية ConfigurationArgumentsالخاصة بك إلى جدول تجزئة. اتبع التنسيق المقدم في الأمثلة السابقة. راقب علامات الاقتباس والفواصل والأقواس.
Duplicate ConfigurationArguments
"العثور على وسيطات مكررة '{0}' في كل من الوسيطات العامة والمحمية"
المشكلة: تحتوي ConfigurationArguments في الإعدادات العامة و ConfigurationArguments في الإعدادات المحمية على خصائص تحمل نفس الاسم.
الحل: إزالة إحدى الخصائص المكررة.
الخصائص المفقودة
"يتطلب settings.Configuration.function تحديد settings.configuration.url أو settings.configuration.module "
"يتطلب settings.Configuration.url تحديد settings.configuration.script "
"يتطلب settings.Configuration.scriptl تحديد settings.configuration.url "
"يتطلب settings.Configuration.url تحديد settings.configuration.function "
"يتطلب protectedSettings.ConfigurationUrlSasToken تحديد settings.configuration.url"
"يتطلب protectedSettings.ConfigurationDataUrlSasToken تحديد settings.configurationData.url"
المشكلة: تحتاج الخاصية المحددة إلى خاصية أخرى، وهي مفقودة.
الحلول:
- توفير الخاصيات المفقودة.
- قم بإزالة الخاصية التي تحتاج إلى الخاصية المفقودة.
الخطوات التالية
- تعرف على كيفية استخدام مجموعات مقاييس الجهاز الظاهري مع ملحق Azure DSC.
- يمكنك العثور على مزيد من التفاصيل حول إدارة بيانات الاعتماد الآمنة في DSC.
- احصل على مقدمة حول معالج ملحقات Azure DSC.
- لمزيد من المعلومات حول PowerShell DSC، انتقل إلى مركز وثائق PowerShell.