Condividi tramite


Configurazioni parziali di PowerShell Desired State Configuration

Si applica a: Windows PowerShell 5.0 e versioni successive.

In PowerShell 5.0, la configurazione dello stato desiderato (DSC) consente di recapitare le configurazioni in frammenti e da più origini. Gestione configurazione locale (LCM) nel nodo di destinazione raggruppa i frammenti prima di applicarli come una singola configurazione. Questa funzionalità consente di condividere il controllo della configurazione tra team o singoli utenti. Ad esempio, se due o più team di sviluppatori collaborano a un servizio, ognuno di essi potrebbe voler creare configurazioni per gestire la propria parte del servizio. Ognuna di queste configurazioni può essere estratta da server di pull diversi e può essere aggiunta in diverse fasi di sviluppo. Le configurazioni parziali consentono inoltre a diversi individui o team di controllare diversi aspetti della configurazione dei nodi senza dover coordinare la modifica di un singolo documento di configurazione. Ad esempio, un team potrebbe essere responsabile della distribuzione di una macchina virtuale e di un sistema operativo, mentre un altro team potrebbe distribuire altre applicazioni e servizi in tale macchina virtuale. Con le configurazioni parziali, ogni team può creare la propria configurazione, senza che nessuna delle due sia inutilmente complicata.

È possibile utilizzare configurazioni parziali in modalità push, pull o una combinazione delle due.

Configurazioni parziali in modalità push

Per utilizzare le configurazioni parziali in modalità push, configurare LCM sul nodo di destinazione per ricevere le configurazioni parziali. Ogni configurazione parziale deve essere inviata alla destinazione usando il Publish-DSCConfiguration cmdlet. Il nodo di destinazione combina quindi la configurazione parziale in un'unica configurazione ed è possibile applicare la configurazione chiamando il cmdlet Start-DscConfiguration .

Configurazione di LCM per le configurazioni parziali in modalità push

Per configurare Gestione configurazione locale per le configurazioni parziali in modalità push, creare una configurazione DSCLocalConfigurationManager con un blocco PartialConfiguration per ogni configurazione parziale. Per ulteriori informazioni sulla configurazione di Gestione configurazione locale, vedere Configurazione di Gestione configurazione locale in Windows. Nell'esempio seguente viene illustrata una configurazione di Gestione configurazione locale che prevede due configurazioni parziali: una che distribuisce il sistema operativo e una che distribuisce e configura 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

La modalità di aggiornamento per ogni configurazione parziale è impostata su "Push". I nomi dei blocchi PartialConfiguration (in questo caso, "ServiceAccountConfig" e "SharePointConfig") devono corrispondere esattamente ai nomi delle configurazioni di cui viene eseguito il push nel nodo di destinazione.

Annotazioni

Il nome di ogni blocco PartialConfiguration deve corrispondere al nome effettivo della configurazione specificato nello script di configurazione, non al nome del file MOF, che deve essere il nome del nodo di destinazione o localhost.

Pubblicazione e avvio di configurazioni parziali in modalità push

Si chiama quindi Publish-DSCConfiguration per ogni configurazione, passando le cartelle che contengono i documenti di configurazione come parametri Path . Publish-DSCConfigurationinserisce i file MOF di configurazione nei nodi di destinazione. Dopo aver pubblicato entrambe le configurazioni, è possibile chiamare Start-DSCConfiguration –UseExisting il nodo di destinazione.

Ad esempio, se sono stati compilati i seguenti documenti MOF di configurazione nel nodo di creazione:

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

Le configurazioni vengono pubblicate ed eseguite nel modo seguente:

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

Annotazioni

L'utente che esegue il cmdlet Publish-DSCConfiguration deve disporre dei privilegi di amministratore per il nodo di destinazione.

Configurazioni parziali in modalità pull

È possibile eseguire il pull delle configurazioni parziali da uno o più server di pull (per ulteriori informazioni sui server di pull, vedere Server di pull della configurazione dello stato desiderato di Windows PowerShell). A tale scopo, è necessario configurare la Gestione configurazione locale sul nodo di destinazione per estrarre le configurazioni parziali e denominare e individuare correttamente i documenti di configurazione sui server di estrazione.

Configurazione di Gestione configurazione locale per le configurazioni dei nodi pull

Per configurare Gestione configurazione locale per il pull di configurazioni parziali da un server di pull, è necessario definire il server di pull in un blocco ConfigurationRepositoryWeb (per un server di pull HTTP) o ConfigurationRepositoryShare (per un server di pull SMB). Si creano quindi blocchi PartialConfiguration che fanno riferimento al server di pull utilizzando la proprietà ConfigurationSource . È inoltre necessario creare un blocco Settings per specificare che LCM utilizza la modalità pull e per specificare ConfigurationNames o ConfigurationID utilizzati dal server di pull e dal nodo di destinazione per identificare le configurazioni. La seguente meta-configurazione definisce un server di pull HTTP denominato CONTOSO-PullSrv e due configurazioni parziali che utilizzano tale server di pull.

Per ulteriori informazioni sulla configurazione di Gestione configurazione locale tramite ConfigurationNames, vedere Configurazione di un client di pull tramite i nomi di configurazione. Per informazioni sulla configurazione di Gestione configurazione locale tramite ConfigurationID, vedere Configurazione di un client di pull tramite l'ID di configurazione.

Configurazione di LCM per le configurazioni in modalità pull utilizzando i nomi di configurazione

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

Configurazione di LCM per le configurazioni in modalità pull utilizzando 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

È possibile eseguire il pull di configurazioni parziali da più server di pull: è sufficiente definire ogni server di pull e quindi fare riferimento al server di pull appropriato in ogni blocco PartialConfiguration .

Dopo aver creato la metaconfigurazione, è necessario eseguirla per creare un documento di configurazione (un file MOF) e quindi chiamare Set-DscLocalConfigurationManager per configurare LCM.

Denominazione e posizionamento dei documenti di configurazione nel server di pull (ConfigurationNames)

I documenti di configurazione parziali devono essere inseriti nella cartella specificata come ConfigurationPath nel web.config file per il server di pull (in genere C:\Program Files\WindowsPowerShell\DscService\Configuration).

Denominazione dei documenti di configurazione nel server di pull in PowerShell 5.1

Se si esegue il pull di una sola configurazione parziale da un singolo server di pull, il documento di configurazione può avere qualsiasi nome. Se si esegue il pull di più configurazioni parziali da un server di pull, il documento di configurazione può essere denominato <ConfigurationName>.mof, dove ConfigurationName è il nome della configurazione parziale oppure <ConfigurationName>.<NodeName>.mof, dove ConfigurationName è il nome della configurazione parziale e NodeName è il nome del nodo di destinazione. In questo modo è possibile eseguire il pull delle configurazioni dal server di pull DSC di Automazione di Azure.

Denominazione dei documenti di configurazione nel server di pull in PowerShell 5.0

I documenti di configurazione devono essere denominati come segue: ConfigurationName.mof, dove ConfigurationName è il nome della configurazione parziale. Per il nostro esempio, i documenti di configurazione dovrebbero essere denominati come segue:

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

Denominazione e posizionamento dei documenti di configurazione nel server di pull (ConfigurationID)

I documenti di configurazione parziali devono essere inseriti nella cartella specificata come ConfigurationPath nel web.config file per il server di pull (in genere C:\Program Files\WindowsPowerShell\DscService\Configuration). I documenti di configurazione devono essere denominati come segue: <ConfigurationName>.<ConfigurationID>.mof, dove ConfigurationName è il nome della configurazione parziale e ConfigurationID è l'ID di configurazione definito in LCM sul nodo di destinazione. Per il nostro esempio, i documenti di configurazione dovrebbero essere denominati come segue:

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

Esecuzione di configurazioni parziali da un server di pull

Dopo che la Gestione configurazione locale nel nodo di destinazione è stata configurata e i documenti di configurazione sono stati creati e denominati correttamente nel server di pull, il nodo di destinazione estrarrà le configurazioni parziali, le combinerà e applicherà la configurazione risultante a intervalli regolari, come specificato dalla proprietà RefreshFrequencyMins di Gestione configurazione locale. Se si desidera forzare un aggiornamento, è possibile chiamare il cmdlet Update-DscConfiguration per eseguire il pull delle configurazioni e applicarle.

Configurazioni parziali in modalità mista push e pull

È inoltre possibile combinare le modalità push e pull per configurazioni parziali. In altre parole, è possibile che venga eseguita l'estrazione di una configurazione parziale da un server di pull, mentre viene eseguito il push di un'altra configurazione parziale. Specificare la modalità di aggiornamento per ogni configurazione parziale come descritto nelle sezioni precedenti. Ad esempio, la seguente meta-configurazione descrive lo stesso esempio, con la ServiceAccountConfig configurazione parziale in modalità pull e la SharePointConfig configurazione parziale in modalità push.

Modalità push e pull miste con 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'
        }

}

Modalità push e pull miste con 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

Si noti che la modalità di aggiornamento specificata nel blocco Impostazioni è "Pull", ma la modalità di aggiornamento per la SharePointConfig configurazione parziale è "Push".

Denominare e individuare i file MOF di configurazione come descritto in precedenza per le rispettive modalità di aggiornamento. Chiamare Publish-DSCConfiguration per pubblicare la SharePointConfig configurazione parziale e attendere che la ServiceAccountConfig configurazione venga estratta dal server di pull oppure forzare un aggiornamento chiamando Update-DscConfiguration.

Esempio di configurazione parziale di 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

Esempio di configurazione parziale di 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

Vedere anche

Server di pull della configurazione dello stato desiderato di Windows PowerShell

Configurazione di Gestione configurazione locale in Windows