Powershell DSC: Quelques réflexions

Voici quelques réflexions sur Powershell DSC:

Une approche descriptive

DSC est fondé sur l’approche descriptive pour la définition des configurations à appliquer et l’approche impérative pour la mise en oeuvre de ces configurations. Cela permet aux développeurs de définir des configurations sans avoir à se soucier des détails techniques et opérationnels pour qu’un déploiement applicatif et son infrastructure se fasse dans les règles. DSC, dans un contexte Devops, rapproche deux métiers qui ont par définition des objectifs différents. Les développeurs ont des besoins de déploiements à intervalles plus ou moins rapides, et les admins IT ont besoin de maintenir la maîtrise d’une infrastructure stable. Les développeurs définissent les configurations, et les admin IT, à travers les ressources DSC, les traduisent en commandes spécifiques et automatisées pour que l’infrastructure réponde aux besoins décrits.

La maîtrise de l’état de son infrastructure

DSC permet de savoir si une configuration a été appliquée, et surtout, si elle a été altérée. Dans un environnement cloud (public ou privé) où des myriades de VMs avec des rôles distincts se côtoient, il n’est pas aisé de savoir avec les outils actuels (GPO, SCCM, etc.), si les configurations sont bien appliquées et si des exceptions apparaissent suite à des manipulations ad hoc. Powershell DSC permet très simplement de savoir si une machine est dans un état désiré ou pas.

Une forte complexité due à des configurations en place qui ne sont plus dans les normes, multipliée par un nombre croissant de systèmes résulte dans la perte de maîtrise de son infrastructure. DSC permet de faire le point, savoir où on en est à tout moment, et ainsi faire face une infrastructure évolutive.

L’idempotence, la clé de la réussite des processus répétitifs

Les ressources sont un point fondamental de DSC. Une ressource est un module Powershell dédié à la configuration d’un élément de l’infrastructure (service web, cluster, annuaire, pare-feu, etc. etc.) qui expose 3 fonctions pour atteindre les objectifs suivants:

  • Appliquer une configuration donnée
  • Vérifier si l’application d’une configuration a été effectuée
  • Récupérer l’état de ce qui a été configuré

L’application d’une configuration doit être faite par idempotence, c’est à dire que si le processus est répété, le résultat sera le même sans générer d’erreurs. C’est ce point qui est important, car il permet de répéter à volonté l’opération de mise en production avec la maîtrise du résultat.

Powershell, le capital confiance par la simplicité.

Powershell est une révolution dans la mise en oeuvre des processus IT. Les demandes de mises en production (DMEP) ou mode opératoires avec des pages et des pages de screen-shots de wizards, clique ici, renseigne cela, next, seront balayés. Je ne dis pas que les DMEPs ou les mode ops vont disparaître, non, mais ils vont être extrêmement simplifiés. La complexité de l’opération sera cachée dans le script. Si le script est robuste, l’infrastructure sera stable, et sa mise en oeuvre rapide. Le capital confiance ne sera plus dans l’habilité d’un admin de gérer l’interface graphique d’un outil de configuration, la configuration sera codée dans le script à travers des cmdlets Powershell. Le tout sera réuni dans des ressources DSC. De plus, différents services informatique de l’entreprise peuvent rendre disponibles des modules ou des ressources DSC pour répondre aux besoins d’autres services.

Par exemple, l’équipe Collaboration peut créer des ressources qui, pour certaines fonctions, vont s’appuyer sur des modules venant de l’équipe Windows, et pour d’autres de l’équipe AD/Sécurité. Chacun apportant sa brique, son savoir faire, ses méthodes, et s’assurant que solution finale reste en conformité avec les règle mises en place. Cela permettra aussi à l’équipe Collaboration de garder la maîtrise sur les temps de mise en production et répondre ainsi aux besoins du métier.

La gestion d’un environnement de plus en plus hétérogène

Les environnements IT sont de plus en plus hétérogènes. Non seulement ils peuvent couvrir plusieurs versions d’un même produit, mais on trouve de plus en plus de liens entre des environnements Linux, UNIX, et Windows et autres. Powershell DSC est capable de gérer Linux à travers Open Management Instrumentation (OMI, la version open source de WMI) et l’approche Pull qu’on voit pour la famille de machines Windows. Qui sait, bientôt on pourrait voir des version de DSC sur UNIX ou même OSX à l’image de PASH qui est une version open source de Powershell disponible sur plusieurs plateformes tels que différents Linux, Solaris, OSX, etc.

Le prix du ticket d’entrée

Powershell DSC n’est pas un langage à part, il fait partie de Powershell, et donc il faut apprendre Powershell. Les acquis d’autres langages comme Visual Basic Script ne sont pas perdus, pour apprendre un langage de programmation il faut comprendre et maîtriser la structure d’un programme informatique, quelqu’un qui a des bases en programmation pourra s’adapter à Powershell plus rapidement. Powershell n’est pas simplement le remplaçant des commandes CMD, c’est un vrai langage de programmation, orienté objet, extrêmement moderne.

Quand un collègue me dit qu’il ne sait pas scripter et que dans son plan de formation il a l’administration de la nouvelle version de telle base de donnée, ou de je ne sais quoi, je lui dis immédiatement de repenser à son plan de formation et choisir plutôt un cours sur les bases de la programmation, peu importe le langage, et d’ensuite suivre une formation dédiée à Powershell et à .NET.

Pour conclure je dirais ceci: on est en pleine révolution et il y a un train formidable à prendre, il ne restera pas en gare longtemps.