إعداد خادم سحب DSC SMB
ينطبق على: Windows PowerShell 4.0، Windows PowerShell 5.0
هام
خادم السحب (Windows Feature DSC-Service) هو مكون مدعوم من Windows Server ولكن لا توجد خطط لتقديم ميزات أو قدرات جديدة. نود أن تعرف أن إصدارا أحدث من DSC متاح الآن بشكل عام، تتم إدارته بواسطة ميزة من نهج Azure المسمى تكوين الضيف. تجمع خدمة تكوين الضيف ميزات ملحق DSC وAzure Automation State Configuration والميزات الأكثر شيوعاً المطلوبة من ملاحظات العملاء. يتضمن تكوين الضيف أيضاً دعم الجهاز المختلط من خلال الخوادم الممكنة بواسطة Arc.
خادم سحب DSC SMB هو كمبيوتر يستضيف مشاركات ملفات SMB التي تجعل ملفات تكوين DSC وموارد DSC متاحة للعقد المستهدفة عندما تطلبها هذه العقد.
لاستخدام خادم سحب SMB ل DSC، يجب عليك:
- إعداد مشاركة ملف SMB على خادم يعمل ب PowerShell 4.0 أو أعلى
- تكوين عميل يقوم بتشغيل PowerShell 4.0 أو أعلى للسحب من مشاركة SMB هذه
استخدام مورد xSmbShare لإنشاء مشاركة ملف SMB
هناك عدد من الطرق لإعداد مشاركة ملف SMB، ولكن دعونا نلقي نظرة على كيفية القيام بذلك باستخدام DSC.
تثبيت مورد xSmbShare
استدعاء cmdlet Install-Module لتثبيت الوحدة النمطية xSmbShare .
ملاحظة
Install-Module
مضمن في وحدة PowerShellGet ، المضمنة في PowerShell 5.0.
يحتوي xSmbShare على مورد DSC xSmbShare، والذي يمكن استخدامه لإنشاء مشاركة ملف SMB.
إنشاء الدليل ومشاركة الملف
يستخدم التكوين التالي مورد الملف لإنشاء دليل للمشاركة ومورد xSmbShare لإعداد مشاركة SMB:
Configuration SmbShare
{
Import-DscResource -ModuleName PSDesiredStateConfiguration
Import-DscResource -ModuleName xSmbShare
Node localhost
{
File CreateFolder
{
DestinationPath = 'C:\DscSmbShare'
Type = 'Directory'
Ensure = 'Present'
}
xSMBShare CreateShare
{
Name = 'DscSmbShare'
Path = 'C:\DscSmbShare'
FullAccess = 'administrator'
ReadAccess = 'myDomain\Contoso-Server$'
FolderEnumerationMode = 'AccessBased'
Ensure = 'Present'
DependsOn = '[File]CreateFolder'
}
}
}
ينشئ التكوين الدليل C:\DscSmbShare
، إذا لم يكن موجودا بالفعل، ثم يستخدم هذا الدليل كمشاركة ملف SMB. يجب منح FullAccess لأي حساب يحتاج إلى الكتابة إلى مشاركة الملف أو حذفها منها. يجب منح ReadAccess لأي عقد عميل تحصل على التكوينات و/أو موارد DSC من المشاركة.
ملاحظة
يتم تشغيل DSC كحساب النظام بشكل افتراضي، لذلك يجب أن يكون للكمبيوتر نفسه حق الوصول إلى المشاركة.
منح نظام الملفات حق الوصول إلى عميل السحب
يسمح منح ReadAccess لعقدة عميل لتلك العقدة بالوصول إلى مشاركة SMB، ولكن ليس إلى الملفات أو المجلدات داخل تلك المشاركة. يجب عليك منح عقد العميل حق الوصول صراحة إلى مجلد مشاركة SMB والمجلدات الفرعية. يمكننا القيام بذلك باستخدام DSC عن طريق إضافة باستخدام مورد cNtfsPermissionEntry ، المضمن في الوحدة النمطية CNtfsAccessControl . يضيف التكوين التالي كتلة cNtfsPermissionEntry التي تمنح ReadAndExecute الوصول إلى عميل السحب:
Configuration DSCSMB
{
Import-DscResource -ModuleName PSDesiredStateConfiguration
Import-DscResource -ModuleName xSmbShare
Import-DscResource -ModuleName cNtfsAccessControl
Node localhost
{
File CreateFolder
{
DestinationPath = 'C:\DscSmbShare'
Type = 'Directory'
Ensure = 'Present'
}
xSMBShare CreateShare
{
Name = 'DscSmbShare'
Path = 'C:\DscSmbShare'
FullAccess = 'administrator'
ReadAccess = 'myDomain\Contoso-Server$'
FolderEnumerationMode = 'AccessBased'
Ensure = 'Present'
DependsOn = '[File]CreateFolder'
}
cNtfsPermissionEntry PermissionSet1
{
Ensure = 'Present'
Path = 'C:\DscSmbShare'
Principal = 'myDomain\Contoso-Server$'
AccessControlInformation = @(
cNtfsAccessControlInformation
{
AccessControlType = 'Allow'
FileSystemRights = 'ReadAndExecute'
Inheritance = 'ThisFolderSubfoldersAndFiles'
NoPropagateInherit = $false
}
)
DependsOn = '[File]CreateFolder'
}
}
}
وضع التكوينات والموارد
احفظ أي ملفات MOF للتكوين و/أو موارد DSC تريد أن تسحبها عقد العميل في مجلد مشاركة SMB.
يجب تسمية <ConfigurationID>.mof
أي ملف تكوين MOF ، حيث <ConfigurationID>
تكون قيمة خاصية ConfigurationID ل LCM للعقدة الهدف. لمزيد من المعلومات حول إعداد عملاء السحب، راجع إعداد عميل سحب باستخدام معرف التكوين.
ملاحظة
يجب استخدام معرفات التكوين إذا كنت تستخدم خادم سحب SMB. أسماء التكوين غير مدعومة ل SMB.
يجب ضغط كل وحدة مورد وتسمية وفقا للنمط {Module Name}_{Module Version}.zip
التالي . على سبيل المثال، سيتم تسمية xWebAdministration_3.2.1.0.zip
وحدة نمطية تسمى xWebAdminstration مع إصدار وحدة نمطية من 3.1.2.0 . يجب احتواء كل إصدار من الوحدة النمطية في ملف مضغوط واحد. إصدارات منفصلة من وحدة نمطية في ملف مضغوط غير مدعومة.
قبل تجميع وحدات موارد DSC لاستخدامها مع خادم السحب، تحتاج إلى إجراء تغيير صغير على بنية الدليل.
التنسيق الافتراضي للوحدات النمطية التي تحتوي على مورد DSC في WMF 5.0 هو {Module Folder}\{Module Version}\DscResources\{DSC Resource Folder}\
.
قبل التعبئة لخادم السحب ببساطة قم بإزالة {Module version}
المجلد حتى يصبح {Module Folder}\DscResources\{DSC Resource Folder}\
المسار . مع هذا التغيير، قم بضغط المجلد كما هو موضح أعلاه ووضع هذه الملفات المضغوطة في مجلد مشاركة SMB.
إنشاء المجموع الاختباري MOF
يجب إقران ملف MOF للتكوين بملف المجموع الاختباري بحيث يمكن ل LCM على عقدة هدف التحقق من صحة التكوين. لإنشاء المجموع الاختباري، اتصل ب New-DSCCheckSum cmdlet. يأخذ cmdlet معلمة Path
تحدد المجلد حيث يوجد التكوين MOF. ينشئ cmdlet ملف المجموع الاختباري المسمى ConfigurationMOFName.mof.checksum
، حيث ConfigurationMOFName
هو اسم ملف التكوين mof. إذا كان هناك أكثر من ملف MOF للتكوين واحد في المجلد المحدد، يتم إنشاء المجموع الاختباري لكل تكوين في المجلد.
يجب أن يكون ملف المجموع الاختباري موجودا في نفس الدليل مثل ملف MOF للتكوين ($env:PROGRAMFILES\WindowsPowerShell\DscService\Configuration
افتراضيا)، وأن يكون له نفس الاسم مع .checksum
الملحق.
ملاحظة
إذا قمت بتغيير ملف التكوين MOF بأي شكل من الأشكال، يجب عليك أيضا إعادة إنشاء ملف المجموع الاختباري.
إعداد عميل سحب ل SMB
لإعداد عميل يسحب التكوينات و/أو الموارد من مشاركة SMB، يمكنك تكوين Configuration Manager المحلي للعميل (LCM) باستخدام كتل ConfigurationRepositoryShare و ResourceRepositoryShare التي تحدد المشاركة التي سيتم سحب التكوينات وموارد DSC منها.
لمزيد من المعلومات حول تكوين LCM، راجع إعداد عميل سحب باستخدام معرف التكوين.
ملاحظة
للتبسيط، يستخدم هذا المثال PSDscAllowPlainTextPassword للسماح بتمرير كلمة مرور نص عادي إلى معلمة بيانات الاعتماد . للحصول على معلومات حول تمرير بيانات الاعتماد بشكل أكثر أمانا، راجع خيارات بيانات الاعتماد في بيانات التكوين. يجب تحديد ConfigurationID في كتلة الإعدادات لتكوين metaconfiguration لخادم سحب SMB، حتى إذا كنت تسحب الموارد فقط.
$secpasswd = ConvertTo-SecureString "Pass1Word" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("TestUser", $secpasswd)
[DSCLocalConfigurationManager()]
configuration SmbCredTest
{
Node $AllNodes.NodeName
{
Settings
{
RefreshMode = 'Pull'
RefreshFrequencyMins = 30
RebootNodeIfNeeded = $true
ConfigurationID = '16db7357-9083-4806-a80c-ebbaf4acd6c1'
}
ConfigurationRepositoryShare SmbConfigShare
{
SourcePath = '\\WIN-E0TRU6U11B1\DscSmbShare'
Credential = $mycreds
}
ResourceRepositoryShare SmbResourceShare
{
SourcePath = '\\WIN-E0TRU6U11B1\DscSmbShare'
Credential = $mycreds
}
}
}
$ConfigurationData = @{
AllNodes = @(
@{
#the "*" means "all nodes named in ConfigData" so we don't have to repeat ourselves
NodeName="localhost"
PSDscAllowPlainTextPassword = $true
})
}
الاعترافات
شكر خاص للأفراد التالين:
- ساعد مايك ف. روبنز، الذي ساعدت منشوراته على استخدام SMB ل DSC في إبلاغ المحتوى في هذا الموضوع. مدونته في (مايك ف روبينز)
- سيرج نيكالاتشيك، الذي قام بتأليف وحدة cNtfsAccessControl . مصدر هذه الوحدة هو في cNtfsAccessControl.