Introduction
Cet article fait partie d’une série de 5 billets sur Desired State Configuration :
Desired State Configuration est disponible comme Powershell 4.0 sur Windows 2012 R2/8.1, Winsows 2012/8 et Windows 2008 R2/7.
Après avoir montrĂ© la configuration du mode Push, cette troisième partie est consacrĂ©e au mode Pull et plus particulièrement lorsqu’on l’utilise conjointement Ă un partage de fichier Samba.
Ainsi, j’expliquerai comment fonctionne le mode Pull ainsi que les diffĂ©rentes Ă©tapes de configuration.
Fonctionnement
Pour rappel, DSC fonctionne de la manière suivante :
-
Récupération de la configuration
-
Application de la configuration
Ces deux Ă©tapes se rĂ©pètent indĂ©finiment selon le temps d’actualisation qui a Ă©tĂ© dĂ©fini pour chacune d’entre elles.
La principale diffĂ©rence entre les modes Pull et Push concerne la rĂ©cupĂ©ration de la configuration. Le mode Pull utilise le principe inverse du mode Push. Au lieu de transmettre les modifications de configurations Ă nos serveurs, ces derniers vont interroger eux-mĂŞme un "dĂ©pĂ´t" central (appelĂ© serveur Pull) qui contiendra l’ensemble des configurations gĂ©rĂ©es par DSC. Le serveur appliquant sa configuration et donc aussi Ă l’origine de la connexion pour vĂ©rifier s’il y a une nouvelle version de sa configuration. Lors de la rĂ©cupĂ©ration d’une nouvelle version, le fichier MOF rĂ©cupĂ©rĂ© est vĂ©rifiĂ© via un fichier checksum prĂ©sent sur serveur Pull. Ci-dessous un schĂ©ma rĂ©capitulatif des deux modes (Pull et Push) :
En mode Pull, nous n’avons plus Ă nous prĂ©occuper de savoir si un de nos serveurs possède la bonne configuration (si elle lui a bien Ă©tĂ© transmise). Concernant le mode Pull, il existe actuellement deux types de dĂ©pĂ´ts pour centraliser les fichiers de configurations :
-
Un partage de fichier (expliqué dans cet article)
-
Un web service (son fonctionnement sera détaillé dans la partie 4 de ce guide sur DSC).
Ceux-ci seront interrogés par les serveurs utilisant DSC.
Comme pour le mode Push, il est nécessaire de configurer la ressource LocalConfigurationManager qui définira les différents paramètres de fonctionnement de DSC sur les machines clientes.
L’un des principaux paramètres configurĂ© est le ConfigurationId. Il s’agit d’un GUID utilisĂ© pour reconnaĂ®tre le bon fichier de configuration Ă tĂ©lĂ©charger depuis le serveur Pull. Ce GUID est inscrit dans le nom du fichier de configuration (exemple : 6c7544f9-4fa9-4a62-a715-04aebfd70b85.mof).
La configuration du mode Pull s’effectue en diffĂ©rentes Ă©tapes :
-
Configuration de la ressource LocalConfigurationManager. Un fichier .meta.mof est créé par serveur pour appliqué la nouvelle configuration de la ressource sur chaque serveur.
-
GĂ©nĂ©ration des fichiers de configuration des serveurs : il s’agit des fichiers .MOF contenant les configurations des serveurs utilisant DSC (un fichier par serveur).
-
Copie des fichiers sur le partage (serveur Pull).
-
Renommage des fichiers MOF avec le GUID de chaque machine concerné.
-
CrĂ©ation des fichiers checksums afin de vĂ©rifier l’intĂ©gritĂ© des fichiers MOF lors de la rĂ©cupĂ©ration d’une configuration par un client (fichier .mof.checksum).
Dans la suite de cet article, je fournis des scripts pour automatiser l’ensemble de ces Ă©tapes. Certaines fonctions sont inspirĂ©s par l’article de Johan Akerström (http://blog.cosmoskey.com/powershell/desired-state-configuration-in-pull-mode-over-smb/) sur le sujet. Les scripts prĂ©sents en fin d’article sont compatibles avec Windows 7/2008R2 car ils n’utilisent pas les nouvelles Cmdlet Powershell 3.0 et 4.0 uniquement disponibles sur Windows 8/2012 et supĂ©rieur. Cela permet de mettre en place un environnement DSC sur une infrastructure ne possĂ©dant pas les toutes dernières version des systèmes d’exploitation Microsoft. Avec ces scripts, il est possible de dĂ©ployer un serveur Pull via DSC, d’automatiser la configuration de DSC sur les serveurs Ă gĂ©rer ainsi que la gĂ©nĂ©ration des fichiers de configuration.
Ressource LocalConfigurationManager
La ressource LocalConfigurationManager est expliquée dans la Partie 2 ; je vous invite donc à vous y référer en complément des paramètres liés au mode Pull.
-
RefreshMode : C’est le mode de fonctionnement du client DSC, la valeur attendue est Pull (pour que cela soit fonctionnel les paramètres DownloadManager et DownloadManagerCustomData sont obligatoire)
-
DownloadManager : Les valeurs possibles sont WebDownloadManager ou DSCFileDownloadManager. Lorsque l’on utilise le mode Pull en mode fichiers (et non web service) alors il faut choisir DSCFileDownloadManager.
-
DownloadManagerCustomData : Il s’agit ici d’indiquer dans un hashtable (via la clĂ© SourcePath), le chemin d’accès aux fichiers MOF.
-
RefreshFrequencyMins : C’est le temps de refresh du fichier de config Ă partir de la source (ici SMB)).
-
ConfigurationModeFrequencyMins : C’est le temps entre chaque vĂ©rification de conformitĂ©.
-
ConfigurationId : Un GUID pour rĂ©cupĂ©rer les bons fichiers de configurations. La machine n’appliquera que le .MOF portant son ConfigurationID.
-
RebootNodeIfNeeded : C’est un booléen autorisant ou non le redémarrage automatique de la machine si celui-ci est nécessaire.
-
ConfigurationMode : Apply, ApplyAndMonitor, ApplyAndAutoCorrect (voir partie 2 pour l’explication).
Exemple de reconfiguration du LocalConfigurationManager pour le mode Pull via partage SMB :
NB : Pour appliquer cette configuration, le remote Powershell doit être activé sur les machines clientes (actif par défaut sur Windows 2012/R2)
Partage SMB
Le partage SMB est crucial car il contiendra l’intĂ©gralitĂ© des fichiers MOF et des fichiers checksums. A partir de Windows 8/2012 est supĂ©rieur, il existe un module permettant de gĂ©rer simplement les partages SMB (crĂ©ation avec New-SMBShare). Voici une mĂ©thode en WMI pour les postes n’ayant pas ce module. Cette dernière ajoute aussi les permissions de partage de contrĂ´le total pour le groupe Everyone.
Ensuite, il est nĂ©cessaire d’appliquer des permissions NTFS en lecture et exĂ©cution pour le groupe Everyone :
ConfigurationID
Le GUID attendu par le paramètre ConfigurationId peut être généré automatiquement :
On peut aussi utiliser le GUID de l’ordinateur dans Active Directory comme l’explique Johan Akerström dans son article sur DSC : http://blog.cosmoskey.com/powershell/desired-state-configuration-in-pull-mode-over-smb/
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
On peut ensuite copier tous nos fichiers MOF de configuration sur le partage en changeant leurs noms avec le GUID.
Checksum des fichiers MOF
Depuis Powershell 4, il existe une cmdlet permettant de gĂ©nĂ©rĂ© un hash : "Get-FileHash". L’algorithme Ă choisir est SHA256 (celui par dĂ©faut).Voici le lien vers la documentation :
http://technet.microsoft.com/en-us/library/dn520872.aspx
Il nous suffit ensuite de créer les fichiers checksum contenant ce hash.
Scripts
Deux scripts sont accessibles via les liens ci-dessous.
Configuration du serveur Pull avec DSC : ici
Librairie de fonctions nécessaires au serveur Pull : ici
L’outil permet de dĂ©ployer un serveur DSC en mode PULL via DSC. Toutes les Ă©tapes sont automatisĂ©es. Les fichiers de configurations des clients sont automatiquement gĂ©nĂ©rĂ©s (copy et renommage avec le guid, crĂ©ation des fichiers checksum, crĂ©ation de tous les fichiers .meta.mof contenant la configuration du LocalConfigurationManager avec la commande Set-DSCLocalConfigurationManager). Il n’y a plus qu’Ă dĂ©ployer les ressources LocalConfigurationManager sur les clients (avec un compte possĂ©dant les droits nĂ©cessaires). Voici les diffĂ©rentes Ă©tapes rĂ©alisĂ©es par le script par ordre d’exĂ©cution (chacune d’entre elles nĂ©cessite la rĂ©ussite de la prĂ©cĂ©dente via le paramètre de ressource DSC DependsOn) :
-
Un dossier contenant le partage avec les configurations est créé.
-
La permission NTFS "ReadAndExecute" est ajoutĂ© au group everyone ainsi que la permission "FullControl" pour le compte ordinateur du serveur Pull. En effet, il va crĂ©er des dossiers et gĂ©nĂ©rer des fichiers. C’est ce compte qui exĂ©cute les fichiers de configuration dans DSC.
-
Un partage est généré.
-
Sur ce partage, le groupe everyone possède la permission "Change". Le compte ordinateur du serveur Pull a des droits "FullControl".
-
Une arborescence de dossier est généré :
Il y a un dossier contenant les configurations créées par l’administrateur (OriginalConfiguration). Un second rĂ©pertoire (Configuration) a les mĂŞme configurations renommĂ©es avec le GUID de l’ordinateur (prĂ© requis du mode Pull pour que le client rĂ©cupère sa configuration, voir explication sur le ConfigurationId). Ce dernier contient aussi un fichier checksum pour chaque fichier de configuration .MOF. Un script de librairie est prĂ©sent dans un troisième dossier (Scripts). Enfin, un rĂ©pertoire nommĂ© LCM possède tous les fichiers ".meta.mof" de configuration de la ressource LocalConfigurationManager des machines clients. - Le script Powershell contenant les fonctions suivantes est copiĂ© dans le rĂ©pertoire des scripts du serveur Pull :
- RĂ©cupĂ©ration d’ordinateurs sans module Active Directory (via adsisearcher)
- GĂ©nĂ©ration automatique des fichiers checksum Ă partir d’un fichier .MOF
- RĂ©cupĂ©ration du GUID d’un ordinateur
- Configuration de la ressource LocalConfigurationManager
-
Les fichiers de configuration de la ressource LocalConfigurationManager sont gĂ©nĂ©rĂ©es pour chaque machine client via le filtre qui a Ă©tĂ© convenu. Il est possible de sĂ©lectionner des ordinateurs par unitĂ© d’organisation ou par groupe Active Directory suivant les paramètres entrĂ©es lors de la gĂ©nĂ©ration du fichier de configuration MOF du serveur Pull.
-
Copie des fichiers de configurations crĂ©er par l’utilisateur sur le rĂ©pertoire contenant les .MOF renommĂ©s avec un GUID ; ainsi que crĂ©ation des fichiers checksum associĂ©s pour que les clients vĂ©rifient l’intĂ©gritĂ© de la configuration rĂ©cupĂ©rĂ©e. GrĂ ce Ă cette Ă©tape dès qu’une nouvelle configuration ou une modification de l’une d’entre elles a lieu, elle est automatiquement mis Ă jour avec un une regĂ©nĂ©ration du fichier checksum.
Les Ă©tapes 1,2,3,4,5,7,8 sont des ressources DSC de types "script" tandis que l’Ă©tape 6 est de type "file".
NB : DSC possède son propre journal d’Ă©vĂ©nements pour vĂ©rifier son bon fonctionnement : Applications and Services Logs / Microsoft / Windows Desired State Configuration. Ce dernier permet de superviser DSC lorsqu’on ne dĂ©ploie plus les configurations manuellement (en mode Push).

0 commentaires