En route vers Puppet, Chef, CfEngine…
Derrière ce titre un peu pompeux se cache une problématique que tout administrateur système s'est ou se posera un jour ou l'autre: Comment gérer l'installation, la mise à jour et la configuration de toutes les machines de son parc informatique ?
Ce billet a pour objectif de poser le problème de base et d'aborder quelques unes des solutions possibles. Il servira d'introduction à une série d'article sur ce vaste et intéressant sujet.
Introduction
Imaginons donc un responsable informatique disposant de trois administrateurs système: Michel, David et Jean-Pierre. Il leurs demande de travailler sur les solutions de déploiement des logiciels dans le système d'information de l'entreprise. Quelques jours plus tard, il leur demande de présenter leurs solutions...
Première solution: "à la mimine"
La première solution pour répondre à la question posée est celle Michel, sysadmin de base (fort en technique mais moins en processus et en communication): lire la documentation du système (ou logiciel) à installer (ou mettre à jour), Googlelifier si la documentation est trop longue (ou seulement en Anglais), tester sur un environnement de développement (Jean-Pierre est quand même un garçon prudent) puis appliquer la dite procédure sur l'ensemble des machines.
On trouve également certains Michel (ceux qui ont passé la certification ISO) qui vont documenter leur installation dans un beau document (ou encore mieux un Wiki). Comme Michel travaille souvent seul, le document ne sera jamais partagé ou enrichie, il deviendra donc obsolète à la prochaine version du système (ou logiciel).
Cette première solution apporte quelques avantages: Michel peut maîtriser de manière unitaire toutes les installations et donc facilement identifier les problèmes, il a une connaissance précise et réelles des briques de ses machines.
D'un autre coté, Michel demande un certain temps pour déployer ou mettre à jour vos logiciels sur les 100 machines de votre parc et il deviendrait complètement débordé, voir incompétent, si ce nombre passait à plusieurs centaines voir milliers de machines...
Deuxième solution: "script, script, script..."
Michel a un collègue, David, qui adopte une méthode similaire dans les premières étapes (lecture de la documentation, recherche sur Internet, test dans un environnement de développement). Mais qui, au lieu de faire lui même les opérations sur les machines, passe par un script Shell qui va automatiser ces taches. Si vous suivez ce blog, vous savez que j'utilise souvent cette méthode pour installer des composants sur mes machines persos (et quelques fois professionnelles).
David bichonne ses beaux scripts dans un repos Git. Ses procédures sont rodées: connexion en SSH, récupération du script et le exécution.
Tout semble parfait mais les développements de ces scripts peuvent vite devenir une vrai galère quand on s'attaque à un parc multi-distribution (ceux qui ont essayé de développer un script d'installation multi-plateforme/distribution doivent me comprendre...).
Troisième solution: "gestionnaire de configuration des machines"
Bienvenu dans le monde de Jean-Pierre. Lui, il utilise un gestionnaire de configuration des machines. Ces systèmes apportent une couche d'abstraction entre ceux que l'on veut faire (les besoins) et comment ces besoins sont concrètement résolus sur les machines cibles.Un pseudo langage de programmation permet de définir les actions à effectuer et le moteur de configuration des machines va s'occuper du déploiement, de l'exécution et de la génération d'un rapport sur chacune des machines cibles.
Plusieurs solutions existent, des propriétaires (comme IBM Tivoli, BSM ou HP Operations Manager i) et des libres (Puppet, Chef, CfEngine). C'est bien sûr sur ces dernières que Jean-Pierre, grand partisan des solutions libres, a donc porté son choix.
Il ne reste plus qu'à commencer à jouer avec le bébé en travaillant sur un environnement de développement/Cloud (teasing pour les prochains billets ).
Conclusion
Je ne connais pas assez ces solutions pour avoir un avis tranché sur la meilleure solution libre. Après quelques recherches sur le net et la consultation des 3 sites internet officiels, je trouve que le projet Puppet est très bien structuré et documenté. Je pense donc partir sur cette solution pour mes prochains billet sur le sujet.
La discussion est cependant ouverte (et les commentaires sont fait pour cela).
Je suis preneur de retours d'expériences sur ces 3 solutions libres !
Sources ayant inspiré ce billet:
- Puppet vs Chef sur le blog Loof.fr
- Comment Puppet, Cfengine ou Chef peuvent aider études et production sur le blog Octo talks !