Partilhar via


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-DSCConfigurationcoloca 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

Windows Configurar a Configuration Manager Local