Partager via


Configuration de l’état souhaité PowerShell, configurations partielles

S’applique à : Windows PowerShell 5.0 et versions ultérieures.

Dans PowerShell 5.0, la configuration de l’état souhaité (DSC) permet de fournir des configurations sous forme de fragments et à partir de plusieurs sources. Le gestionnaire de configuration locale (LCM) sur le nœud cible rassemble les fragments avant de les appliquer en tant que configuration unique. Cette capacité permet de partager le contrôle de la configuration entre des équipes ou des individus. Par exemple, si deux équipes de développeurs ou plus collaborent sur un service, chacune d’entre elles peut vouloir créer des configurations pour gérer sa partie du service. Chacune de ces configurations peut être extraite de différents serveurs collecteurs, et elles peuvent être ajoutées à différents stades de développement. Les configurations partielles permettent également à différentes personnes ou équipes de contrôler différents aspects de la configuration des nœuds sans avoir à coordonner l’édition d’un seul document de configuration. Par exemple, une équipe peut être responsable du déploiement d’une machine virtuelle et d’un système d’exploitation, tandis qu’une autre équipe peut déployer d’autres applications et services sur cette machine virtuelle. Avec les configurations partielles, chaque équipe peut créer sa propre configuration, sans que l’une ou l’autre ne soit inutilement compliquée.

Vous pouvez utiliser des configurations partielles en mode Push, en mode Pull ou une combinaison des deux.

Configurations partielles en mode push

Pour utiliser des configurations partielles en mode Push, vous devez configurer le LCM sur le noeud cible pour recevoir les configurations partielles. Chaque configuration partielle doit être envoyée à la cible à l’aide de l’applet Publish-DSCConfiguration de commande. Le nœud cible combine ensuite la configuration partielle en une seule configuration, et vous pouvez appliquer la configuration en appelant l’applet de commande Start-DscConfiguration .

Configuration du LCM pour les configurations partielles en mode Push

Pour configurer le LCM pour les configurations partielles en mode push, vous devez créer une configuration DSCLocalConfigurationManager avec un bloc PartialConfiguration pour chaque configuration partielle. Pour plus d’informations sur la configuration du LCM, consultez Configuration du gestionnaire de configuration local dans Windows. L’exemple suivant montre une configuration LCM qui attend deux configurations partielles, l’une qui déploie le système d’exploitation et l’autre qui déploie et configure 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

Le RefreshMode pour chaque configuration partielle est réglé sur « Push ». Les noms des blocs PartialConfiguration (dans ce cas, « ServiceAccountConfig » et « SharePointConfig ») doivent correspondre exactement aux noms des configurations qui sont envoyées au nœud cible.

Note

Le nom de chaque bloc PartialConfiguration doit correspondre au nom réel de la configuration tel qu’il est spécifié dans le script de configuration, et non au nom du fichier MOF, qui doit être soit le nom du nœud cible, soit localhost.

Publication et démarrage des configurations partielles en mode Push

Vous appelez ensuite Publish-DSCConfiguration pour chaque configuration, en passant les dossiers qui contiennent les documents de configuration en tant que paramètres Path . Publish-DSCConfigurationplace les fichiers MOF de configuration sur les nœuds cibles. Après avoir publié les deux configurations, vous pouvez appeler Start-DSCConfiguration –UseExisting le nœud cible.

Par exemple, si vous avez compilé les documents MOF de configuration suivants sur le nœud de création :

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

Vous devez publier et exécuter les configurations comme suit :

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

Note

L’utilisateur qui exécute l’applet de commande Publish-DSCConfiguration doit disposer de privilèges d’administrateur sur le nœud cible.

Configurations partielles en mode pull

Les configurations partielles peuvent être extraites d’un ou de plusieurs serveurs collecteurs (pour plus d’informations sur les serveurs collecteurs, consultez Serveurs collecteurs de configuration de l’état souhaité de Windows PowerShell). Pour ce faire, vous devez configurer le LCM sur le nœud cible pour extraire les configurations partielles, et nommer et localiser correctement les documents de configuration sur les serveurs collecteurs.

Configuration du LCM pour les configurations de nœud pull

Pour configurer le LCM afin d’extraire des configurations partielles d’un serveur collecteur, vous devez définir le serveur collecteur dans un bloc ConfigurationRepositoryWeb (pour un serveur collecteur HTTP) ou ConfigurationRepositoryShare (pour un serveur collecteur SMB). Vous créez ensuite des blocs PartialConfiguration qui font référence au serveur collecteur à l’aide de la propriété ConfigurationSource . Vous devez également créer un bloc Settings pour spécifier que le LCM utilise le mode pull et pour spécifier les ConfigurationNames ou ConfigurationID que le serveur pull et le nœud cible utilisent pour identifier les configurations. La méta-configuration suivante définit un serveur d’extraction HTTP nommé CONTOSO-PullSrv et deux configurations partielles qui utilisent ce serveur d’extraction.

Pour plus d’informations sur la configuration du LCM à l’aide de ConfigurationNames, consultez Configuration d’un client d’extraction à l’aide de noms de configuration. Pour plus d’informations sur la configuration du LCM à l’aide de ConfigurationID, consultez Configuration d’un client d’extraction à l’aide de l’ID de configuration.

Configuration du LCM pour les configurations en mode d’extraction à l’aide des noms de configuration

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

Configuration du LCM pour les configurations en mode d’extraction à l’aide de 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

Vous pouvez extraire des configurations partielles de plusieurs serveurs collecteurs : il vous suffit de définir chaque serveur collecteur, puis de faire référence au serveur collecteur approprié dans chaque bloc PartialConfiguration .

Après avoir créé la méta-configuration, vous devez l’exécuter pour créer un document de configuration (un fichier MOF), puis appeler Set-DscLocalConfigurationManager pour configurer le LCM.

Nommage et placement des documents de configuration sur le serveur collecteur (ConfigurationNames)

Les documents de configuration partielle doivent être placés dans le dossier spécifié en tant que ConfigurationPath dans le web.config fichier du serveur collecteur (généralement C:\Program Files\WindowsPowerShell\DscService\Configuration).

Nommage des documents de configuration sur le serveur collecteur dans PowerShell 5.1

Si vous n’extrayez qu’une seule configuration partielle d’un serveur collecteur individuel, le document de configuration peut avoir n’importe quel nom. Si vous extrayez plusieurs configurations partielles d’un serveur collecteur, le document de configuration peut être nommé <ConfigurationName>.mof, où ConfigurationName est le nom de la configuration partielle, ou <ConfigurationName>.<NodeName>.mof, où ConfigurationName est le nom de la configuration partielle et NodeName est le nom du nœud cible. Cela vous permet d’extraire des configurations à partir du serveur d’extraction DSC Azure Automation.

Nommage des documents de configuration sur le serveur collecteur dans PowerShell 5.0

Les documents de configuration doivent être nommés comme suit : ConfigurationName.mof, où ConfigurationName est le nom de la configuration partielle. Pour notre exemple, les documents de configuration doivent être nommés comme suit :

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

Nommage et placement des documents de configuration sur le serveur collecteur (ConfigurationID)

Les documents de configuration partielle doivent être placés dans le dossier spécifié en tant que ConfigurationPath dans le web.config fichier du serveur collecteur (généralement C:\Program Files\WindowsPowerShell\DscService\Configuration). Les documents de configuration doivent être nommés comme suit : <ConfigurationName>.<ConfigurationID>.mof, où ConfigurationName est le nom de la configuration partielle et ConfigurationID est l’ID de configuration défini dans le LCM sur le nœud cible. Pour notre exemple, les documents de configuration doivent être nommés comme suit :

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

Exécution de configurations partielles à partir d’un serveur collecteur

Une fois que le LCM sur le nœud cible a été configuré et que les documents de configuration ont été créés et nommés correctement sur le serveur collecteur, le nœud cible extrait les configurations partielles, les combine et applique la configuration résultante à intervalles réguliers, comme spécifié par la propriété RefreshFrequencyMins du LCM. Si vous souhaitez forcer une actualisation, vous pouvez appeler l’applet de commande Update-DscConfiguration pour extraire les configurations et les appliquer.

Configurations partielles en modes mixte push et pull

Vous pouvez également mélanger les modes Push et Pull pour des configurations partielles. En d’autres termes, vous pouvez avoir une configuration partielle qui est extraite d’un serveur collecteur, tandis qu’une autre configuration partielle est envoyée. Spécifiez le mode d’actualisation pour chaque configuration partielle, comme décrit dans les sections précédentes. Par exemple, la méta-configuration suivante décrit le même exemple, avec la ServiceAccountConfig configuration partielle en mode pull et la SharePointConfig configuration partielle en mode push.

Modes push et pull mixtes à l’aide de 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'
        }

}

Modes push et pull mixtes à l’aide de 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

Notez que le RefreshMode spécifié dans le bloc Settings est « Pull », mais que le RefreshMode pour la SharePointConfig configuration partielle est « Push ».

Nommez et localisez les fichiers MOF de configuration comme décrit ci-dessus pour leurs modes d’actualisation respectifs. Appelez Publish-DSCConfiguration pour publier la SharePointConfig configuration partielle et attendez qu’elle ServiceAccountConfig soit extraite du serveur collecteur ou forcez une actualisation en appelant Update-DscConfiguration.

Exemple de configuration partielle 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

Exemple de configuration partielle de 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

Voir aussi

Serveurs collecteurs de configuration de l’état souhaité de Windows PowerShell

Windows Configuration du gestionnaire de configuration local