Powershell DSC: Utilisation d’un module du DSC Resource Kit

Microsoft a publié toute une série de modules utilisables (et modifiables) pour DSC.

Ces modules peuvent être trouvés ici.

L’utilisation de ces modules est très intéressante, car on s’appuie sur l’approche de programmation déclarative. C’est à dire qu’on dit ce qu’on voudrait accompli, mais on ne définit pas comment. Le contraire de l’approche déclarative est l’approche impérative, qui définit le comment ou les étapes nécessaires pour accomplir une tâche.

Par exemple, on peut imaginer la création d’une règle de pare-feu ainsi:

Là on décrit ce qu’on veut dans notre règle, mais on ne dit pas comment l’accomplir. C’est DSC qui sait comment créer une règle de pare-feu.

L’avantage de cette approche est qu’on peut se focaliser sur ce qu’on veut accompli sans se soucier des détails techniques, qui eux, peuvent changer avec le temps.

Donc, on met en place notre configuration, tel qu’on l’a décrit dans les articles précédents, mais on voit qu’il y a un problème.

Sur la machine cible où on veut que cette configuration soit appliquée, on constate qu’elle ne peut pas s’appliquer. L’event log (voir ici pour le troubleshooting), nous montre ceci:

dscmodulenotfound

Si on réfléchi, c’est normal, on fait l’import du module xNetworking afin d’utiliser la ressource xFirewall avec  Import-DSCResource -ModuleName xNetworking, mais la machine cible n’a pas ce module, donc DSC ne peut rien faire.

DSC offre le moyen de distribuer les modules sur les machines cible.

Pour ceci on doit placer le fichier ZIP qu’on a téléchargé ici dans le répertoire DSCService\modules: $env:ProgramFiles\WindowsPowershell\DscService\Modules

On doit également créer le checksum du fichier zip avec la commande: New-DscCheckSum:

DscServiceModules

 

Si jamais vous tombez sur l’erreur de type 4104 qui indique à la fin d’une longue phrase:

File C:\Program Files\WindowsPowerShell\Modules\xNetworking\DscResources\MSFT_xFirewall\MSFT_xFirewall.psm1 cannot be loaded because you opted not to run this software now.

4104

Cet événement veut dire que vous avez essayé de copier les fichier manuellement afin de tester la configuration, et Windows a bloqué le fichier car il pense que le fichier vient d’internet. Pour régler ce problème il suffit d’utiliser la cmdlet Unblock-File. Mais le meilleur moyen de régler ce problème est de laisser DSC s’occuper de la copie des modules ;).

On vérifie que la configuration s’est bien appliquée sur la machine cible:

firewallconfig

 

Vérifions le pare-feu:

firewallrule

Et voilà.