Entretien avec Luke Kanies, développeur principal de Puppet.
GLMF : Bonjour, Pouvez vous vous présenter rapidement ?
Luke Kanies : Mon nom est Luke Kanies, je suis le développeur principal de Puppet. J'ai été administrateur Unix professionnel pendant sept ans avant de me tourner vers le conseil et le développement d'outils. Je suis mon propre employeur depuis 2002. Puppet est la dernière application d'une longue liste d'outils que j'ai écrits, modifiés et utilisés ; bien sûr, je suis convaincu de sa supériorité :)
GLMF : Il existe déjà des outils de gestion de configuration, alors pourquoi écrire Puppet ? En quoi Puppet est il différent des autres ?
L. K. : Lorsque j'ai créé Puppet, j'avais pour motivations le désir d'une communauté plus large, plus ouverte que celle des autres outils que j'avais vus, mais aussi la volonté de ne pas avoir à m'occuper des parties « bas niveau » comme tant d'autres le font. C'est pourquoi Puppet fournit ce niveau d'abstraction des ressources : vous gérez des utilisateurs, des groupes, des paquets ou des services sans avoir à vous préoccuper des formats de fichiers ou de leur emplacement.
Cette couche d'abstraction est cruciale pour deux raisons. D'une part, elle vous place au-dessus des détails du bas niveau donc vous en faites plus avec moins de code. D'autre part, elle nous permet de créer des types de ressources inter-plateformes. Ainsi, le concept d'« utilisateur » est le même sous Debian, sous Mac OS X, sous Solaris ou sous bien d'autres systèmes.
Au-delà de ces différences principales, le langage de Puppet a beaucoup de fonctionnalités simples qui le différencient des autres, comme une meilleure prise en charge des différentes plateformes. L'architecture globale de Puppet a des aspects qui la distinguent grandement, comme l'utilisation de Facter pour renvoyer les informations des clients dans le compilateur.
GLMF : Quels sont les prochaines améliorations et prochains développements prévus dans Puppet ?
L. K. : Notre tâche principale en ce moment est une refactorisation significative des procédures réseau internes. Le changement le plus important est le passage à une interface de type REST pour les communications. Nous en profitons aussi pour rendre Puppet plus facile à étendre et à intégrer à d'autres programmes. Cela devrait avoir un énorme impact sur la facilité à transmettre et à recevoir des informations vers et depuis Puppet.
Nous nous concentrons également sur la stabilité et la maintenabilité. Nous sommes au milieu de la transition vers des tests unitaires plus simples et plus efficaces. Nous sommes en train de mettre en place un système de compilation automatisée pour que la communauté puisse nous avertir quand des tests échouent sur n'importe quelle plateforme prise en charge et nous remplaçons de larges portions de code avec du code mieux écrit et plus maintenable.
Ce sont les principaux objectifs de ce qui est actuellement appelé la « release 0.25 ». Une fois qu'elle sera sortie, nous nous appliquerons à étendre le langage et à ajouter des fonctionnalités rendues possibles par la refactorisation réseau que nous sommes en train d'effectuer. L'équipe de développement est encore plutôt réduite, ce qui nous limite dans nos prévisions.