Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: Windows PowerShell 5.0 и более поздних версий.
В PowerShell 5.0 конфигурация требуемого состояния (DSC) позволяет доставлять конфигурации фрагментами и из нескольких источников. Локальный диспетчер конфигураций (LCM) на целевом узле объединяет фрагменты перед применением их в качестве единой конфигурации. Эта возможность позволяет совместно управлять конфигурацией между командами или отдельными пользователями. Например, если две или более групп разработчиков совместно работают над службой, каждая из них может захотеть создать конфигурации для управления своей частью службы. Каждая из этих конфигураций может быть извлечена с разных опрашивающих серверов, и они могут быть добавлены на разных этапах разработки. Частичные конфигурации также позволяют разным лицам или командам управлять различными аспектами настройки узлов без необходимости координировать редактирование одного документа конфигурации. Например, одна команда может отвечать за развертывание виртуальной машины и операционной системы, в то время как другая команда может развертывать на этой виртуальной машине другие приложения и службы. С помощью частичных конфигураций каждая команда может создать свою собственную конфигурацию, не усложняя ни одну из них.
Вы можете использовать частичные конфигурации в режиме принудительной отправки, в режиме извлечения или в их сочетании.
Частичные конфигурации в режиме принудительной печати
Чтобы использовать частичные конфигурации в режиме принудительной отправки, необходимо настроить LCM на целевом узле для приема частичных конфигураций. Каждая частичная конфигурация должна быть отправлена в целевой объект с помощью Publish-DSCConfiguration командлета. Затем целевой узел объединяет частичную конфигурацию в одну конфигурацию, и вы можете применить конфигурацию, вызвав командлет Start-DscConfiguration .
Настройка LCM для частичных конфигураций в режиме push-уведомлений
Чтобы настроить LCM для частичных конфигураций в режиме принудительной отправки, необходимо создать конфигурацию DSCLocalConfigurationManager с одним блоком PartialConfiguration для каждой частичной конфигурации. Дополнительные сведения о настройке LCM см. в разделе Настройка локального диспетчера конфигураций в Windows. В следующем примере показана конфигурация 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именем .
Публикация и запуск частичных конфигураций в режиме push-уведомления
Затем вы вызываете Publish-DSCConfiguration для каждой конфигурации, передавая папки, содержащие документы конфигурации, в качестве параметров Path .
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...
Замечание
Пользователь, выполняющий командлет Publish-DSCConfiguration, должен иметь права администратора на целевом узле.
Частичные конфигурации в режиме вытягивания
Частичные конфигурации могут быть получены с одного или нескольких опрашивающих серверов (дополнительные сведения о опрашивающих серверах см. в разделе Опрашивающие серверы конфигурации требуемого состояния Windows PowerShell). Для этого необходимо настроить LCM на целевом узле для извлечения частичных конфигураций, а также правильно назвать и найти документы по конфигурации на опрашивающих серверах.
Настройка LCM для конфигураций опрашивающих узлов
Чтобы настроить LCM на извлечение частичных конфигураций с опрашивающего сервера, опрашивающий сервер определяется либо в блоке ConfigurationRepositoryWeb (для опрашивающего сервера HTTP), либо в блоке ConfigurationRepositoryShare (для опрашивающего сервера SMB). Затем создаются блоки PartialConfiguration , которые ссылаются на опрашивающий сервер с помощью свойства ConfigurationSource . Кроме того, необходимо создать блок Settings , чтобы указать, что 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
Вы можете извлекать частичные конфигурации из нескольких опрашивающих серверов — вам просто нужно определить каждый опрашивающий сервер, а затем обратиться к соответствующему опрашивающему серверу в каждом блоке PartialConfiguration .
После создания метаконфигурации необходимо запустить ее для создания документа конфигурации (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 — имя целевого узла. Это позволяет извлекать конфигурации с опрашивающего сервера DSC службы автоматизации Azure.
Именование конфигурационных документов на опрашивающем сервере в 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 — это идентификатор конфигурации, <ConfigurationName>.<ConfigurationID>.mofопределенный в 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 , чтобы извлечь конфигурации и применить их.
Частичные конфигурации в смешанных режимах push и pull
Вы также можете комбинировать режимы push и pull для частичных конфигураций. То есть, у вас может быть одна частичная конфигурация, которая извлекается с опрашивающего сервера, в то время как другая частичная конфигурация отправляется. Укажите режим обновления для каждой частичной конфигурации, как описано в предыдущих разделах. Например, следующая метаконфигурация описывает тот же пример, с частичной конфигурацией в режиме извлечения 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", а для частичной SharePointConfig конфигурации - режим RefreshMode - "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',
'[email protected]'
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
См. также
Опрашивающие серверы конфигурации требуемого состояния Windows PowerShell