Configurações parciais do PowerShell Desired State Configuration
Aplica-se a: Windows PowerShell 5.0 e posterior.
No PowerShell 5.0, Desired State Configuration (DSC) permite que as configurações sejam fornecidas em fragmentos e de várias origens. O Configuration Manager Local (LCM) no nó de destino junta os fragmentos antes de os aplicar como uma única configuração. Esta capacidade permite o controlo de partilha da configuração entre equipas ou indivíduos. Por exemplo, se duas ou mais equipas de programadores estiverem a colaborar num serviço, cada um deles poderá querer criar configurações para gerir a sua parte do serviço. Cada uma destas configurações pode ser extraída de diferentes servidores Pull e podem ser adicionadas em diferentes fases de desenvolvimento. As configurações parciais também permitem que diferentes indivíduos ou equipas controlem diferentes aspetos da configuração de nós sem terem de coordenar a edição de um único documento de configuração. Por exemplo, uma equipa pode ser responsável por implementar uma VM e um sistema operativo, enquanto outra equipa pode implementar outras aplicações e serviços nessa VM. Com configurações parciais, cada equipa pode criar a sua própria configuração, sem que qualquer uma delas seja desnecessariamente complicada.
Pode utilizar configurações parciais no modo push, no modo de solicitação ou numa combinação dos dois.
Configurações parciais no modo push
Para utilizar configurações parciais no modo push, configure o LCM no nó de destino para receber as configurações parciais. Cada configuração parcial tem de ser enviada para o destino através do Publish-DSCConfiguration
cmdlet. Em seguida, o nó de destino combina a configuração parcial numa única configuração e pode aplicar a configuração ao chamar o cmdlet Start-DscConfiguration .
Configurar o LCM para configurações parciais do modo push
Para configurar o LCM para configurações parciais no modo push, crie uma configuração DSCLocalConfigurationManager com um bloco PartialConfiguration para cada configuração parcial. Para obter mais informações sobre como configurar o LCM, veja Windows Configuring the Local Configuration Manager (Configurar o Configuration Manager Local). O exemplo seguinte mostra uma configuração LCM que espera duas configurações parciais: uma que implementa o SO e outra que implementa e configura o 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
O RefreshMode para cada configuração parcial está definido como "Push". Os nomes dos blocos PartialConfiguration (neste caso, "ServiceAccountConfig" e "SharePointConfig") têm de corresponder exatamente aos nomes das configurações que são enviadas para o nó de destino.
Nota
O nome de cada bloco PartialConfiguration tem de corresponder ao nome real da configuração tal como é especificado no script de configuração e não ao nome do ficheiro MOF, que deve ser o nome do nó de destino ou localhost
.
Publicar e iniciar configurações parciais do modo push
Em seguida, chama Publish-DSCConfiguration para cada configuração, transmitindo as pastas que contêm os documentos de configuração como os parâmetros Caminho .
Publish-DSCConfiguration
coloca os ficheiros MOF de configuração nos nós de destino. Depois de publicar ambas as configurações, pode chamar Start-DSCConfiguration –UseExisting
no nó de destino.
Por exemplo, se tiver compilado os seguintes documentos MOF de configuração no nó de criação:
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
Publicaria e executaria as configurações da seguinte forma:
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...
Nota
O utilizador que está a executar o cmdlet Publish-DSCConfiguration tem de ter privilégios de administrador no nó de destino.
Configurações parciais no modo de solicitação
As configurações parciais podem ser extraídas de um ou mais servidores Pull (para obter mais informações sobre servidores Pull, consulte Windows PowerShell Desired State Configuration Pull Servers. Para tal, tem de configurar o LCM no nó de destino para solicitar as configurações parciais e nomear e localizar corretamente os documentos de configuração nos servidores Pull.
Configurar o LCM para configurações de nós pull
Para configurar o LCM para solicitar configurações parciais de um servidor Pull, defina o servidor Pull num bloco ConfigurationRepositoryWeb (para um servidor pull HTTP) ou ConfigurationRepositoryShare (para um servidor pull SMB). Em seguida, pode criar blocos PartialConfiguration que se referem ao servidor Pull com a propriedade ConfigurationSource . Também tem de criar um bloco Definições para especificar que o LCM utiliza o modo pull e para especificar o ConfigurationNames ou ConfigurationID que o servidor Pull e o nó de destino utilizam para identificar as configurações. A seguinte meta-configuração define um servidor PULL HTTP com o nome CONTOSO-PullSrv e duas configurações parciais que utilizam esse servidor Pull.
Para obter mais informações sobre como configurar o LCM com ConfigurationNames, veja Configurar um cliente Pull com nomes de configuração. Para obter informações sobre como configurar o LCM com o ConfigurationID, veja Configurar um cliente Pull com o ID de configuração.
Configurar o LCM para configurações do modo pull com nomes de configuração
[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'
}
}
Configurar o LCM para configurações do modo pull com o 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
Pode extrair configurações parciais de mais do que um servidor Pull— basta definir cada servidor Pull e, em seguida, consultar o servidor pull adequado em cada bloco PartialConfiguration .
Depois de criar a metaconfiguração, tem de executá-la para criar um documento de configuração (um ficheiro MOF) e, em seguida, chamar Set-DscLocalConfigurationManager para configurar o LCM.
Atribuir nomes e colocar os documentos de configuração no servidor Pull (ConfigurationNames)
Os documentos de configuração parcial têm de ser colocados na pasta especificada como ConfigurationPath no web.config
ficheiro do servidor Pull (normalmente C:\Program Files\WindowsPowerShell\DscService\Configuration
).
Atribuir nomes a documentos de configuração no servidor Pull no PowerShell 5.1
Se estiver a solicitar apenas uma configuração parcial de um servidor pull individual, o documento de configuração pode ter qualquer nome. Se estiver a solicitar mais do que uma configuração parcial de um servidor Pull, o documento de configuração pode ter o nome <ConfigurationName>.mof
, em que ConfigurationName é o nome da configuração parcial ou <ConfigurationName>.<NodeName>.mof
, em que ConfigurationName é o nome da configuração parcial e NodeName é o nome do nó de destino. Isto permite-lhe solicitar configurações do Automatização do Azure servidor pull do DSC.
Atribuir nomes a documentos de configuração no servidor Pull no PowerShell 5.0
Os documentos de configuração têm de ter o nome seguinte: ConfigurationName.mof
, em que ConfigurationName é o nome da configuração parcial. Para o nosso exemplo, os documentos de configuração devem ser nomeados da seguinte forma:
ServiceAccountConfig.mof
ServiceAccountConfig.mof.checksum
SharePointConfig.mof
SharePointConfig.mof.checksum
Atribuir nomes e colocar os documentos de configuração no servidor Pull (ConfigurationID)
Os documentos de configuração parcial têm de ser colocados na pasta especificada como ConfigurationPath no web.config
ficheiro do servidor Pull (normalmente C:\Program Files\WindowsPowerShell\DscService\Configuration
). Os documentos de configuração têm de ser nomeados da seguinte forma: <ConfigurationName>.<ConfigurationID>.mof
, em que ConfigurationName é o nome da configuração parcial e ConfigurationID é o ID de configuração definido no LCM no nó de destino. Para o nosso exemplo, os documentos de configuração devem ser nomeados da seguinte forma:
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
Executar configurações parciais a partir de um servidor Pull
Depois de configurar o LCM no nó de destino e os documentos de configuração terem sido criados e devidamente nomeados no servidor Pull, o nó de destino irá solicitar as configurações parciais, combiná-las e aplicar a configuração resultante em intervalos regulares, conforme especificado pela propriedade RefreshFrequencyMins do LCM. Se quiser forçar uma atualização, pode chamar o cmdlet Update-DscConfiguration para solicitar as configurações e aplicá-las.
Configurações parciais em modos de push e pull mistos
Também pode misturar modos push e pull para configurações parciais. Ou seja, pode ter uma configuração parcial que é extraída de um servidor Pull, enquanto outra configuração parcial é enviada. Especifique o modo de atualização para cada configuração parcial, conforme descrito nas secções anteriores. Por exemplo, a seguinte meta-configuração descreve o mesmo exemplo, com a ServiceAccountConfig
configuração parcial no modo pull e a SharePointConfig
configuração parcial no modo push.
Modos push e pull mistos com 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'
}
}
Modos push e pull mistos com o 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
Tenha em atenção que o RefreshMode especificado no bloco Definições é "Pull", mas o RefreshMode para a SharePointConfig
configuração parcial é "Push".
Atribua um nome e localize os ficheiros MOF de configuração conforme descrito acima para os respetivos modos de atualização.
Chame Publish-DSCConfiguration
para publicar a SharePointConfig
configuração parcial e aguarde que a ServiceAccountConfig
configuração seja extraída do servidor Pull ou force uma atualização ao chamar Update-DscConfiguration.
Exemplo de Configuração Parcial de 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
Exemplo de Configuração Parcial do 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
Consulte também
Servidores Pull Windows PowerShell Desired State Configuration