Utiliser DSC pour configurer Windows Server

Effectué

L’un des autres administrateurs de serveur chez Contoso connaît très bien Windows PowerShell et vous avez suggéré d’utiliser PowerShell DSC pour configurer les ordinateurs Windows Server récemment déployés. Vous avez appris que DSC permettait d’implémenter la gestion de la configuration déclarative via une combinaison de scripts PowerShell et de fonctionnalités du système d’exploitation. Vous décidez d’approfondir vos investigations.

Notes

Un langage de programmation déclaratif sépare l’intention (ce que vous voulez faire) de l’exécution (comment vous voulez le faire).

Qu’est-ce que la configuration de l’état souhaité (DSC) ?

DSC est une plateforme de gestion basée sur PowerShell que vous pouvez utiliser pour gérer vos serveurs et l’infrastructure informatique associée. DSC est constitué de trois composants, tels que décrits dans le tableau suivant.

Composant Description
Configurations Scripts PowerShell déclaratifs qui configurent et définissent vos ressources. Lors de l’exécution de la configuration, DSC applique la configuration définie. Cela garantit que la ressource cible, dans ce cas, un serveur, est à l’état défini. C’est le Local Configuration Manager (LCM) qui applique et gère ces configurations.
Ressources Contiennent le code qui définit et applique l’état de configuration souhaité de la ressource.
LCM Moteur utilisé par DSC pour appliquer les configurations. Le LCM vérifie régulièrement l’état du système et, le cas échéant, appelle le code dans les ressources pour réappliquer l’état souhaité.

Notes

Vous n’avez pas besoin d’installer quoi que ce soit pour utiliser DSC. PowerShell DSC est inclus dans Windows.

Le composant DSC basé sur Windows repose largement sur le composant LCM. Ce composant sert de moteur d’exécution des scripts Windows PowerShell DSC.

Notes

Le gestionnaire LCM fait partie intégrante de toutes les versions des systèmes d’exploitation Windows actuellement prises en charge.

Le LCM assume les tâches suivantes :

  • Coordination de l’implémentation des paramètres définis dans les scripts DSC
  • Surveillance de l’état de ces paramètres
  • Mise à jour de l’état d’un ordinateur pour qu’il corresponde à l’état souhaité

Chaque fois que le Gestionnaire de configuration local s’exécute, il effectue les étapes suivantes :

  1. Obtenir : récupère l’état actuel de l’ordinateur.
  2. Tester : compare l’état actuel de l’ordinateur à l’état souhaité en utilisant un script DSC compilé (fichier .mof).
  3. Définir : met à jour la configuration de l’ordinateur pour qu’il corresponde à l’état souhaité décrit dans le fichier .mof.

Vous pouvez déployer la configuration DSC en mode Envoi (push) ou en mode Tirage (pull), comme décrit dans le tableau suivant.

Mode Description
Envoi de données (push) Dans ce mode, vous envoyez manuellement, ou par push, les configurations souhaitées vers un ou plusieurs ordinateurs gérés. Le composant LCM garantit que l’état sur chaque ordinateur géré correspond à ce que votre configuration spécifie.
Extraction Dans ce mode, un serveur Pull détient vos informations de configuration. Le composant LCM sur chaque ordinateur géré interroge régulièrement le serveur Pull (intervalles de 15 minutes par défaut), afin d’obtenir les dernières informations de configuration. Le serveur Pull envoie alors les détails concernant toutes les modifications de configuration à chaque ordinateur géré.

Conseil

Bien que vous puissiez configurer un serveur Windows Server en tant que serveur Pull, vous pouvez également utiliser Azure Automation Desired State Configuration.

Configuration requise pour DSC avec Windows

Votre environnement doit répondre à diverses exigences pour pouvoir utiliser DSC avec Windows. Celles-ci sont les suivantes :

  • Système d’exploitation. Les ordinateurs gérés doivent exécuter Windows 8.1 ou ultérieur, ou bien Windows Server 2012 R2 ou ultérieur.
  • Gestion à distance de Windows. La gestion à distance de Windows (WinRM) doit être activée sur les ordinateurs gérés.

Avec DSC, vous pouvez définir l’état souhaité de :

  • Un système d'exploitation
  • Une application

Utilisation de scripts

Vous pouvez utiliser un script pour définir votre DSC. Une fois que vous avez créé et compilé votre configuration, vous pouvez l’affecter à des ordinateurs qui recevront ensuite cette configuration.

Créer un script

L’implémentation de DSC commence souvent par la création d’un script de configuration (.ps1) qui décrit cet état souhaité. L’exemple suivant est un exemple simple de configuration. Dans ce cas, le script vérifie la présence d’Internet Information Services (IIS) et l’installe si nécessaire.

configuration IISInstall
{
    # Import the required module.
    Import-DscResource -ModuleName PsDesiredStateConfiguration
    node "localhost"
    {
        WindowsFeature IIS
        {
            Ensure = "Present"
            Name = "Web-Server"
        }
    }
}

Après avoir créé le script, vous devez l’enregistrer. Dans ce cas, enregistrez-le sous le nom IISInstall.ps1.

Compiler la configuration

Après avoir créé un script de configuration, vous devez le compiler. La compilation génère un ou plusieurs fichiers .mof qui contiennent des configurations applicables aux nœuds cibles. Pour compiler un script, dans une console PowerShell, recherchez le dossier dans lequel vous avez enregistré votre configuration (fichier de script) et exécutez les commandes suivantes pour compiler la configuration dans un fichier MOF :

.\IISInstall.ps1
IISInstall

Appliquer la configuration

L’étape suivante consiste à appliquer la configuration. Pour ce faire, exécutez la cmdlet Start-DscConfiguration.

Important

Pour autoriser l’exécution de DSC, vous devez configurer Windows pour la communication à distance PowerShell, même lorsque vous exécutez une configuration localhost.

Par exemple, dans une console PowerShell, accédez au dossier dans lequel la configuration est enregistrée, puis exécutez la commande PowerShell suivante :

Start-DscConfiguration .\IISInstall

Conseil

Vous pouvez vérifier que votre configuration a bien été effectuée en exécutant la cmdlet Get-DscConfigurationStatus.