Gedeeltelijke configuraties van PowerShell Desired State Configuration

Van toepassing op: Windows PowerShell 5.0 en hoger.

In PowerShell 5.0 kunnen met Desired State Configuration (DSC) configuraties worden geleverd in fragmenten en vanuit meerdere bronnen. De local Configuration Manager (LCM) op het doelknooppunt plaatst de fragmenten samen voordat ze als één configuratie worden toegepast. Met deze mogelijkheid kunt u de controle over de configuratie delen tussen teams of personen. Als bijvoorbeeld twee of meer teams van ontwikkelaars samenwerken aan een service, willen ze mogelijk configuraties maken om hun deel van de service te beheren. Elk van deze configuraties kan worden opgehaald uit verschillende pull-servers en ze kunnen worden toegevoegd in verschillende ontwikkelingsstadia. Met gedeeltelijke configuraties kunnen verschillende personen of teams ook verschillende aspecten van het configureren van knooppunten beheren zonder dat ze de bewerking van één configuratiedocument hoeven te coördineren. Het ene team kan bijvoorbeeld verantwoordelijk zijn voor het implementeren van een VM en een besturingssysteem, terwijl een ander team andere toepassingen en services op die VM kan implementeren. Met gedeeltelijke configuraties kan elk team een eigen configuratie maken, zonder dat een van beide onnodig ingewikkeld is.

U kunt gedeeltelijke configuraties gebruiken in de pushmodus, pull-modus of een combinatie van de twee.

Gedeeltelijke configuraties in pushmodus

Als u gedeeltelijke configuraties in de pushmodus wilt gebruiken, configureert u de LCM op het doelknooppunt om de gedeeltelijke configuraties te ontvangen. Elke gedeeltelijke configuratie moet naar het doel worden gepusht met behulp van de Publish-DSCConfiguration cmdlet. Het doelknooppunt combineert vervolgens de gedeeltelijke configuratie in één configuratie en u kunt de configuratie toepassen door de cmdlet Start-DscConfiguration aan te roepen.

LCM configureren voor gedeeltelijke pushmodusconfiguraties

Als u de LCM wilt configureren voor gedeeltelijke configuraties in de pushmodus, maakt u een DSCLocalConfigurationManager-configuratie met één PartialConfiguration-blok voor elke gedeeltelijke configuratie. Zie Windows De lokale Configuration Manager configureren voor meer informatie over het configureren van de LCM. In het volgende voorbeeld ziet u een LCM-configuratie die twee gedeeltelijke configuraties verwacht: een die het besturingssysteem implementeert en een die SharePoint implementeert en configureert.

[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

De RefreshMode voor elke gedeeltelijke configuratie is ingesteld op 'Push'. De namen van de PartialConfiguration-blokken (in dit geval 'ServiceAccountConfig' en 'SharePointConfig') moeten exact overeenkomen met de namen van de configuraties die naar het doelknooppunt worden gepusht.

Notitie

De naam van elk PartialConfiguration-blok moet overeenkomen met de werkelijke naam van de configuratie zoals deze is opgegeven in het configuratiescript, niet de naam van het MOF-bestand. Dit moet de naam zijn van het doelknooppunt of localhost.

Gedeeltelijke pushmodusconfiguraties publiceren en starten

Vervolgens roept u Publish-DSCConfiguration aan voor elke configuratie, waarbij u de mappen met de configuratiedocumenten doorgeeft als padparameters . Publish-DSCConfigurationplaatst de MOF-configuratiebestanden op de doelknooppunten. Nadat u beide configuraties hebt gepubliceerd, kunt u aanroepen Start-DSCConfiguration –UseExisting op het doelknooppunt.

Als u bijvoorbeeld de volgende MOF-configuratiedocumenten hebt gecompileerd op het ontwerpknooppunt:

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

U zou de configuraties als volgt publiceren en uitvoeren:

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

Notitie

De gebruiker die de cmdlet Publish-DSCConfiguration uitvoert, moet beheerdersbevoegdheden hebben voor het doelknooppunt.

Gedeeltelijke configuraties in pull-modus

Gedeeltelijke configuraties kunnen worden opgehaald uit een of meer pull-servers (zie Windows PowerShell Desired State Configuration Pull-servers voor meer informatie over pull-servers. Hiervoor moet u de LCM op het doelknooppunt configureren om de gedeeltelijke configuraties op te halen en de configuratiedocumenten op de juiste manier op de pull-servers te benoemen en te zoeken.

De LCM configureren voor configuraties van pull-knooppunten

Als u de LCM wilt configureren voor het ophalen van gedeeltelijke configuraties van een pull-server, definieert u de pull-server in een ConfigurationRepositoryWeb-blok (voor een HTTP-pull-server) of ConfigurationRepositoryShare (voor een SMB-pull-server). Vervolgens maakt u PartialConfiguration-blokken die verwijzen naar de pull-server met behulp van de eigenschap ConfigurationSource . U moet ook een Instellingenblok maken om op te geven dat de LCM de pull-modus gebruikt en om de ConfigurationNames of ConfigurationID op te geven die de pull-server en het doelknooppunt gebruiken om de configuraties te identificeren. De volgende metaconfiguratie definieert een HTTP-pull-server met de naam CONTOSO-PullSrv en twee gedeeltelijke configuraties die gebruikmaken van die pull-server.

Zie Een pull-client instellen met configuratienamen voor meer informatie over het configureren van de LCM met behulp van ConfigurationNames. Zie Een pull-client instellen met configuratie-id voor informatie over het configureren van de LCM met behulp van ConfigurationID.

De LCM configureren voor configuraties in de pull-modus met behulp van configuratienamen

[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'
        }
}

De LCM configureren voor pull-modusconfiguraties met behulp van 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

U kunt gedeeltelijke configuraties ophalen van meer dan één pull-server. U hoeft alleen maar elke pull-server te definiëren en vervolgens te verwijzen naar de juiste pull-server in elk partialconfiguration-blok .

Nadat u de metaconfiguratie hebt gemaakt, moet u deze uitvoeren om een configuratiedocument (een MOF-bestand) te maken en vervolgens Set-DscLocalConfigurationManager aanroepen om de LCM te configureren.

Naamgeving en plaatsing van de configuratiedocumenten op de pull-server (ConfigurationNames)

De gedeeltelijke configuratiedocumenten moeten worden geplaatst in de map die is opgegeven als het ConfigurationPath in het web.config bestand voor de pull-server (meestal C:\Program Files\WindowsPowerShell\DscService\Configuration).

Naamgevingsconfiguratiedocumenten op de pull-server in PowerShell 5.1

Als u slechts één gedeeltelijke configuratie van een afzonderlijke pull-server ophaalt, kan het configuratiedocument elke naam hebben. Als u meer dan één gedeeltelijke configuratie van een pull-server ophaalt, kan het configuratiedocument de naam <ConfigurationName>.mofhebben, waarbij ConfigurationName de naam van de gedeeltelijke configuratie is of <ConfigurationName>.<NodeName>.mof, waarbij ConfigurationName de naam is van de gedeeltelijke configuratie en NodeName de naam van het doelknooppunt is. Hiermee kunt u configuraties ophalen van Azure Automation DSC-pull-server.

Naamgevingsconfiguratiedocumenten op de pull-server in PowerShell 5.0

De configuratiedocumenten moeten de volgende naam hebben: ConfigurationName.mof, waarbij ConfigurationName de naam is van de gedeeltelijke configuratie. In ons voorbeeld moeten de configuratiedocumenten de volgende naam krijgen:

ServiceAccountConfig.mof
ServiceAccountConfig.mof.checksum
SharePointConfig.mof
SharePointConfig.mof.checksum

Naamgeving en plaatsing van de configuratiedocumenten op de pull-server (ConfigurationID)

De gedeeltelijke configuratiedocumenten moeten worden geplaatst in de map die is opgegeven als het ConfigurationPath in het web.config bestand voor de pull-server (meestal C:\Program Files\WindowsPowerShell\DscService\Configuration). De configuratiedocumenten moeten de volgende naam hebben: , <ConfigurationName>.<ConfigurationID>.mofwaarbij ConfigurationName de naam is van de gedeeltelijke configuratie en ConfigurationID de configuratie-id is die is gedefinieerd in de LCM op het doelknooppunt. In ons voorbeeld moeten de configuratiedocumenten de volgende naam krijgen:

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

Gedeeltelijke configuraties uitvoeren vanaf een pull-server

Nadat de LCM op het doelknooppunt is geconfigureerd en de configuratiedocumenten zijn gemaakt en de juiste naam hebben op de pull-server, haalt het doelknooppunt de gedeeltelijke configuraties op, combineert deze en past het de resulterende configuratie regelmatig toe, zoals is opgegeven door de eigenschap RefreshFrequencyMins van de LCM. Als u een vernieuwing wilt afdwingen, kunt u de cmdlet Update-DscConfiguration aanroepen om de configuraties op te halen en toe te passen.

Gedeeltelijke configuraties in gemengde push- en pull-modi

U kunt ook push- en pull-modi combineren voor gedeeltelijke configuraties. Dat wil gezegd, u kunt één gedeeltelijke configuratie hebben die wordt opgehaald van een pull-server, terwijl een andere gedeeltelijke configuratie wordt gepusht. Geef de vernieuwingsmodus op voor elke gedeeltelijke configuratie, zoals beschreven in de vorige secties. In de volgende metaconfiguratie wordt bijvoorbeeld hetzelfde voorbeeld beschreven, met de gedeeltelijke configuratie in de ServiceAccountConfig pull-modus en de gedeeltelijke configuratie in de SharePointConfig pushmodus.

Gemengde push- en pull-modi met 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'
        }

}

Gemengde push- en pull-modi met 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

Houd er rekening mee dat de RefreshMode die is opgegeven in het blok Instellingen 'Pull' is, maar de RefreshMode voor de SharePointConfig gedeeltelijke configuratie is 'Push'.

Geef de configuratie-MOF-bestanden een naam en zoek deze, zoals hierboven beschreven, voor hun respectieve vernieuwingsmodi. Roep Publish-DSCConfiguration aan om de SharePointConfig gedeeltelijke configuratie te publiceren en wacht tot de ServiceAccountConfig configuratie is opgehaald van de pull-server of forceer een vernieuwing door Update-DscConfiguration aan te roepen.

Voorbeeld van gedeeltelijke configuratie van 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

Voorbeeld van gedeeltelijke configuratie van 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

Zie ook

Windows PowerShell Desired State Configuration pull-servers

Windows De lokale Configuration Manager configureren