التكوينات الجزئية لتكوين الحالة المطلوبة ل PowerShell
ينطبق على: Windows PowerShell 5.0 والإصدارات الأحدث.
في PowerShell 5.0، يسمح تكوين الحالة المطلوبة (DSC) بتسليم التكوينات في أجزاء ومن مصادر متعددة. يضع Configuration Manager المحلي (LCM) على العقدة الهدف الأجزاء معا قبل تطبيقها كتكوين واحد. تسمح هذه الإمكانية بمشاركة التحكم في التكوين بين الفرق أو الأفراد. على سبيل المثال، إذا تعاون فريقان أو أكثر من المطورين في خدمة، فقد يرغب كل منهم في إنشاء تكوينات لإدارة جزء الخدمة الخاص بهم. يمكن سحب كل تكوين من هذه التكوينات من خوادم سحب مختلفة، ويمكن إضافتها في مراحل مختلفة من التطوير. تسمح التكوينات الجزئية أيضا لأفراد أو فرق مختلفة بالتحكم في جوانب مختلفة من تكوين العقد دون الحاجة إلى تنسيق تحرير مستند تكوين واحد. على سبيل المثال، قد يكون فريق واحد مسؤولا عن نشر جهاز ظاهري ونظام تشغيل، بينما قد يقوم فريق آخر بنشر تطبيقات وخدمات أخرى على هذا الجهاز الظاهري. باستخدام التكوينات الجزئية، يمكن لكل فريق إنشاء تكوينه الخاص، دون أن يكون أي منهما معقدا دون داع.
يمكنك استخدام التكوينات الجزئية في وضع الدفع أو وضع السحب أو مزيج من الاثنين.
تكوينات جزئية في وضع الدفع
لاستخدام التكوينات الجزئية في وضع الدفع، يمكنك تكوين LCM على العقدة الهدف لتلقي التكوينات الجزئية. يجب دفع كل تكوين جزئي إلى الهدف باستخدام Publish-DSCConfiguration
cmdlet. ثم تجمع العقدة الهدف التكوين الجزئي في تكوين واحد، ويمكنك تطبيق التكوين عن طريق استدعاء Start-DscConfiguration cmdlet.
تكوين LCM للتكوينات الجزئية لوضع الدفع
لتكوين LCM للتكوينات الجزئية في وضع الدفع، يمكنك إنشاء تكوين DSCLocalConfigurationManager مع كتلة تكوين جزئية واحدة لكل تكوين جزئي. لمزيد من المعلومات حول تكوين LCM، راجع تكوين Windows Configuration Manager المحلي. يوضح المثال التالي تكوين LCM الذي يتوقع تكوينين جزئيين - أحدهما يوزع نظام التشغيل والآخر يقوم بتوزيع SharePoint وتكوينه.
[DSCLocalConfigurationManager()]
configuration PartialConfigDemo
{
Node localhost
{
PartialConfiguration ServiceAccountConfig
{
Description = 'Configuration to add the SharePoint service account to the Administrators group.'
RefreshMode = 'Push'
}
PartialConfiguration SharePointConfig
{
Description = 'Configuration for the SharePoint server'
RefreshMode = 'Push'
}
}
}
PartialConfigDemo
يتم تعيين RefreshMode لكل تكوين جزئي إلى "Push". يجب أن تتطابق أسماء كتل PartialConfiguration (في هذه الحالة، "ServiceAccountConfig" و"SharePointConfig") تماما مع أسماء التكوينات التي يتم دفعها إلى العقدة الهدف.
ملاحظة
يجب أن تتطابق تسمية كل كتلة PartialConfiguration مع الاسم الفعلي للتكوين كما هو محدد في البرنامج النصي للتكوين، وليس اسم ملف MOF، والذي يجب أن يكون إما اسم العقدة الهدف أو localhost
.
نشر التكوينات الجزئية لوضع الدفع وبدء تشغيلها
ثم استدعاء Publish-DSCConfiguration لكل تكوين، وتمرير المجلدات التي تحتوي على مستندات التكوين كمعلمات المسار .
Publish-DSCConfiguration
يضع ملفات MOF للتكوين إلى العقد الهدف. بعد نشر كلا التكوينين، يمكنك استدعاء Start-DSCConfiguration –UseExisting
العقدة الهدف.
على سبيل المثال، إذا قمت بتجميع مستندات MOF للتكوين التالية على عقدة التأليف:
Get-ChildItem -Recurse
Directory: C:\PartialConfigTest
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 8/11/2016 1:55 PM ServiceAccountConfig
d----- 11/17/2016 4:14 PM SharePointConfig
Directory: C:\PartialConfigTest\ServiceAccountConfig
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 8/11/2016 2:02 PM 2034 TestVM.mof
Directory: C:\PartialConfigTest\SharePointConfig
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 11/17/2016 4:14 PM 1930 TestVM.mof
يمكنك نشر التكوينات وتشغيلها على النحو التالي:
Publish-DscConfiguration .\ServiceAccountConfig -ComputerName 'TestVM'
Publish-DscConfiguration .\SharePointConfig -ComputerName 'TestVM'
Start-DscConfiguration -UseExisting -ComputerName 'TestVM'
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
17 Job17 Configuratio... Running True TestVM Start-DscConfiguration...
ملاحظة
يجب أن يكون لدى المستخدم الذي يقوم بتشغيل Cmdlet Publish-DSCConfiguration امتيازات المسؤول على العقدة الهدف.
تكوينات جزئية في وضع السحب
يمكن سحب التكوينات الجزئية من خادم سحب واحد أو أكثر (لمزيد من المعلومات حول خوادم السحب، راجع Windows PowerShell خوادم سحب تكوين الحالة المطلوبة. للقيام بذلك، يجب عليك تكوين LCM على العقدة الهدف لسحب التكوينات الجزئية، وتسمية مستندات التكوين وتحديد موقعها بشكل صحيح على خوادم السحب.
تكوين LCM لتكوينات عقدة السحب
لتكوين LCM لسحب التكوينات الجزئية من خادم سحب، يمكنك تحديد خادم السحب إما في كتلة ConfigurationRepositoryWeb (لخادم سحب HTTP) أو ConfigurationRepositoryShare (لخادم سحب SMB). ثم تقوم بإنشاء كتل PartialConfiguration التي تشير إلى خادم السحب باستخدام الخاصية ConfigurationSource . تحتاج أيضا إلى إنشاء كتلة إعدادات لتحديد أن LCM يستخدم وضع السحب، وتحديد ConfigurationNames أو ConfigurationID الذي يستخدمه خادم السحب والعقدة الهدف لتحديد التكوينات. يحدد تكوين التعريف التالي خادم سحب HTTP المسمى CONTOSO-PullSrv وتكوينين جزئيين يستخدمان خادم السحب هذا.
لمزيد من المعلومات حول تكوين LCM باستخدام ConfigurationNames، راجع إعداد عميل سحب باستخدام أسماء التكوين. للحصول على معلومات حول تكوين LCM باستخدام ConfigurationID، راجع إعداد عميل سحب باستخدام معرف التكوين.
تكوين LCM لتكوينات وضع السحب باستخدام أسماء التكوين
[DscLocalConfigurationManager()]
Configuration PartialConfigDemoConfigNames
{
Settings
{
RefreshFrequencyMins = 30;
RefreshMode = "PULL";
ConfigurationMode ="ApplyAndAutocorrect";
AllowModuleOverwrite = $true;
RebootNodeIfNeeded = $true;
ConfigurationModeFrequencyMins = 60;
}
ConfigurationRepositoryWeb CONTOSO-PullSrv
{
ServerURL = 'https://CONTOSO-PullSrv:8080/PSDSCPullServer.svc'
RegistrationKey = 5b41f4e6-5e6d-45f5-8102-f2227468ef38
ConfigurationNames = @("ServiceAccountConfig", "SharePointConfig")
}
PartialConfiguration ServiceAccountConfig
{
Description = "ServiceAccountConfig"
ConfigurationSource = @("[ConfigurationRepositoryWeb]CONTOSO-PullSrv")
}
PartialConfiguration SharePointConfig
{
Description = "SharePointConfig"
ConfigurationSource = @("[ConfigurationRepositoryWeb]CONTOSO-PullSrv")
DependsOn = '[PartialConfiguration]ServiceAccountConfig'
}
}
تكوين LCM لتكوينات وضع السحب باستخدام ConfigurationID
[DSCLocalConfigurationManager()]
configuration PartialConfigDemoConfigID
{
Node localhost
{
Settings
{
RefreshMode = 'Pull'
ConfigurationID = '1d545e3b-60c3-47a0-bf65-5afc05182fd0'
RefreshFrequencyMins = 30
RebootNodeIfNeeded = $true
}
ConfigurationRepositoryWeb CONTOSO-PullSrv
{
ServerURL = 'https://CONTOSO-PullSrv:8080/PSDSCPullServer.svc'
}
PartialConfiguration ServiceAccountConfig
{
Description = 'Configuration for the Base OS'
ConfigurationSource = '[ConfigurationRepositoryWeb]CONTOSO-PullSrv'
RefreshMode = 'Pull'
}
PartialConfiguration SharePointConfig
{
Description = 'Configuration for the Sharepoint Server'
ConfigurationSource = '[ConfigurationRepositoryWeb]CONTOSO-PullSrv'
DependsOn = '[PartialConfiguration]ServiceAccountConfig'
RefreshMode = 'Pull'
}
}
}
PartialConfigDemo
يمكنك سحب التكوينات الجزئية من أكثر من خادم سحب واحد - ستحتاج فقط إلى تعريف كل خادم سحب، ثم الرجوع إلى خادم السحب المناسب في كل كتلة تكوين جزئي .
بعد إنشاء تكوين التعريف، يجب تشغيله لإنشاء مستند تكوين (ملف MOF)، ثم استدعاء Set-DscLocalConfigurationManager لتكوين LCM.
تسمية مستندات التكوين ووضعها على خادم السحب (ConfigurationNames)
يجب وضع مستندات التكوين الجزئية في المجلد المحدد باسم ConfigurationPath في web.config
ملف خادم السحب (عادة C:\Program Files\WindowsPowerShell\DscService\Configuration
).
تسمية مستندات التكوين على خادم السحب في PowerShell 5.1
إذا كنت تسحب تكوينا جزئيا واحدا فقط من خادم سحب فردي، يمكن أن يكون لمستند التكوين أي اسم. إذا كنت تسحب أكثر من تكوين جزئي واحد من خادم سحب، يمكن تسمية مستند التكوين إما <ConfigurationName>.mof
، حيث يكون ConfigurationName هو اسم التكوين الجزئي، أو <ConfigurationName>.<NodeName>.mof
، حيث يكون ConfigurationName هو اسم التكوين الجزئي، ويكون NodeName هو اسم العقدة الهدف. يسمح لك هذا بسحب التكوينات من خادم سحب Azure Automation DSC.
تسمية مستندات التكوين على خادم السحب في PowerShell 5.0
يجب تسمية مستندات التكوين على النحو التالي: ConfigurationName.mof
، حيث ConfigurationName هو اسم التكوين الجزئي. على سبيل المثال، يجب تسمية مستندات التكوين على النحو التالي:
ServiceAccountConfig.mof
ServiceAccountConfig.mof.checksum
SharePointConfig.mof
SharePointConfig.mof.checksum
تسمية مستندات التكوين ووضعها على خادم السحب (ConfigurationID)
يجب وضع مستندات التكوين الجزئية في المجلد المحدد باسم ConfigurationPath في web.config
ملف خادم السحب (عادة C:\Program Files\WindowsPowerShell\DscService\Configuration
). يجب تسمية مستندات التكوين على النحو التالي: <ConfigurationName>.<ConfigurationID>.mof
، حيث يكون ConfigurationName هو اسم التكوين الجزئي و ConfigurationID هو معرف التكوين المحدد في LCM على العقدة الهدف. على سبيل المثال، يجب تسمية مستندات التكوين على النحو التالي:
ServiceAccountConfig.1d545e3b-60c3-47a0-bf65-5afc05182fd0.mof
ServiceAccountConfig.1d545e3b-60c3-47a0-bf65-5afc05182fd0.mof.checksum
SharePointConfig.1d545e3b-60c3-47a0-bf65-5afc05182fd0.mof
SharePointConfig.1d545e3b-60c3-47a0-bf65-5afc05182fd0.mof.checksum
تشغيل تكوينات جزئية من خادم سحب
بعد تكوين LCM على العقدة الهدف، وإنشاء مستندات التكوين وتعيينها بشكل صحيح على خادم السحب، ستقوم العقدة الهدف بسحب التكوينات الجزئية، ودمجها، وتطبيق التكوين الناتج على فترات منتظمة كما هو محدد بواسطة خاصية RefreshFrequencyMins ل LCM. إذا كنت تريد فرض تحديث، يمكنك استدعاء Update-DscConfiguration cmdlet، لسحب التكوينات وتطبيقها.
التكوينات الجزئية في أوضاع الدفع والسحب المختلطة
يمكنك أيضا مزج أوضاع الدفع والسحب للتكوينات الجزئية. أي أنه يمكن أن يكون لديك تكوين جزئي واحد يتم سحبه من خادم سحب، بينما يتم دفع تكوين جزئي آخر. حدد وضع التحديث لكل تكوين جزئي كما هو موضح في الأقسام السابقة. على سبيل المثال، يصف تكوين التعريف التالي نفس المثال، مع ServiceAccountConfig
التكوين الجزئي في وضع السحب والتكوين SharePointConfig
الجزئي في وضع الدفع.
أوضاع الدفع والسحب المختلطة باستخدام ConfigurationNames
[DscLocalConfigurationManager()]
Configuration PartialConfigDemoConfigNames
{
Settings
{
RefreshFrequencyMins = 30;
RefreshMode = "PULL";
ConfigurationMode = "ApplyAndAutocorrect";
AllowModuleOverwrite = $true;
RebootNodeIfNeeded = $true;
ConfigurationModeFrequencyMins = 60;
}
ConfigurationRepositoryWeb CONTOSO-PullSrv
{
ServerURL = 'https://CONTOSO-PullSrv:8080/PSDSCPullServer.svc'
RegistrationKey = 5b41f4e6-5e6d-45f5-8102-f2227468ef38
ConfigurationNames = @("ServiceAccountConfig", "SharePointConfig")
}
PartialConfiguration ServiceAccountConfig
{
Description = "ServiceAccountConfig"
ConfigurationSource = @("[ConfigurationRepositoryWeb]CONTOSO-PullSrv")
RefreshMode = 'Pull'
}
PartialConfiguration SharePointConfig
{
Description = "SharePointConfig"
DependsOn = '[PartialConfiguration]ServiceAccountConfig'
RefreshMode = 'Push'
}
}
أوضاع الدفع والسحب المختلطة باستخدام ConfigurationID
[DSCLocalConfigurationManager()]
configuration PartialConfigDemo
{
Node localhost
{
Settings
{
RefreshMode = 'Pull'
ConfigurationID = '1d545e3b-60c3-47a0-bf65-5afc05182fd0'
RefreshFrequencyMins = 30
RebootNodeIfNeeded = $true
}
ConfigurationRepositoryWeb CONTOSO-PullSrv
{
ServerURL = 'https://CONTOSO-PullSrv:8080/PSDSCPullServer.svc'
}
PartialConfiguration ServiceAccountConfig
{
Description = 'Configuration for the Base OS'
ConfigurationSource = '[ConfigurationRepositoryWeb]CONTOSO-PullSrv'
RefreshMode = 'Pull'
}
PartialConfiguration SharePointConfig
{
Description = 'Configuration for the Sharepoint Server'
DependsOn = '[PartialConfiguration]ServiceAccountConfig'
RefreshMode = 'Push'
}
}
}
PartialConfigDemo
لاحظ أن RefreshMode المحدد في كتلة الإعدادات هو "Pull"، ولكن RefreshMode للتكوين SharePointConfig
الجزئي هو "Push".
قم بتسمية ملفات MOF للتكوين وتحديد موقعها كما هو موضح أعلاه لأوضاع التحديث الخاصة بها.
اتصل Publish-DSCConfiguration
لنشر SharePointConfig
التكوين الجزئي، وإما الانتظار حتى ServiceAccountConfig
يتم سحب التكوين من خادم السحب، أو فرض تحديث عن طريق استدعاء Update-DscConfiguration.
مثال على تكوين ServiceAccountConfig الجزئي
Configuration ServiceAccountConfig
{
Param (
[Parameter(Mandatory,
HelpMessage="Domain credentials required to add domain\sharepoint_svc to the local Administrators group.")]
[ValidateNotNullOrEmpty()]
[pscredential]$Credential
)
Import-DscResource -ModuleName PSDesiredStateConfiguration
Node localhost
{
Group LocalAdmins
{
GroupName = 'Administrators'
MembersToInclude = 'domain\sharepoint_svc',
'admins@example.domain'
Ensure = 'Present'
Credential = $Credential
}
WindowsFeature Telnet
{
Name = 'Telnet-Server'
Ensure = 'Absent'
}
}
}
ServiceAccountConfig
مثال على تكوين SharePointConfig الجزئي
Configuration SharePointConfig
{
Param (
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[pscredential]$ProductKey
)
Import-DscResource -ModuleName xSharePoint
Node localhost
{
xSPInstall SharePointDefault
{
Ensure = 'Present'
BinaryDir = '\\FileServer\Installers\Sharepoint\'
ProductKey = $ProductKey
}
}
}
SharePointConfig