Depuis quelques années, les applications permettant de déployer des configurations et d’exécuter des commandes à distance sur des machines ont beaucoup gagné en popularité. En effet, l’augmentation du nombre de sites ou applications web et d’internautes ainsi que la diversification des services ont largement multiplié la taille des parcs de machine gérés par les hébergeurs et autres fournisseurs de services. S’il est relativement simple de gérer les configurations de 10 machines en les traitant les unes après les autres, il est impossible de le faire pour 1000 machines.

C’est pourquoi NBS System utilise aujourd’hui l’outil open source Salt pour automatiser la gestion de son parc de machines, grâce à l’exécution de commandes à distance et à l’automatisation des déploiements de configurations.

Pourquoi choisir SALT ?

Salt automatisation logoAvant d’utiliser Salt, NBS System utilisait Fabric, un outil open source permettant de lancer des commandes à distance via SSH. L’inconvénient de Fabric, c’est que les connexions SSH sont relativement lentes, et les actions et manipulations passant par cet outil prenaient donc du temps. Au cours du temps, avec le développement de l’entreprise et l’acquisition de nouveaux clients, le temps est devenu une ressource de plus en plus importante, et le besoin d’un outil permettant d’automatiser le déploiement des configurations s’est fait sentir.

Nos experts ont alors cherché un nouvel outil, permettant à la fois d’exécuter des commandes à distance, et de déployer des configurations… et respectant également d’autres contraintes majeures. La première était de ne pas utiliser de connexions SSH, pas assez performantes. Le logiciel choisi devait également être libre, écrit dans un langage connu et maîtrisé par nos ressources internes, avec une communauté active prête à réagir rapidement au cas où nous aurions besoin d’aide.

Comme vous vous en doutez, c’est Salt, outil open source écrit en Python, qui a répondu à toutes nos attentes. Après l’avoir testé, nous l’avons donc adopté et déployé sur l’ensemble de notre parc. Retrouvez notre article sur Salt publié sur Linux Magazine après cette période d’essai. Notre équipe participe également au projet Salt : elle a notamment produit des fixes et des modules de l’outil.

Exécution de commandes à distance

Le fonctionnement de Salt est assez simple. Il existe un serveur Salt, le master, depuis lequel toutes les actions sont prises. Sur toutes les machines du parc sont installés des « salt minions », qui se connectent au master via des ports dédiés, et qui attendent les instructions de ce dernier.

Ainsi, les équipes du Support se connectent sur le serveur master et peuvent envoyer des commandes Salt (installer un paquet, créer un nouvel utilisateur) vers une machine de leur choix, ou bien sur toutes les machines d’un environnement donné. Ce niveau d’industrialisation permet par exemple de s’assurer que les serveurs master/réplicat soient bien homogènes, puisqu’une seule et même commande est envoyée à toutes les machines.

Salt master & minions

Automatisation des déploiements

Mais là où Salt prend tout son intérêt, c’est pour le déploiement massif de configurations. Quand une machine est créée sur notre parc, elle démarre d’une image contenant une version minimale de Debian, et son minion Salt.

Selon le rôle de la machine, les applications qui y sont installées sont bien entendu différentes… C’est pourquoi notre équipe de Recherche & Développement a créé des fichiers de configuration qui décrivent, selon le rôle de la machine, ces applications et leur configuration. Au démarrage, le minion Salt va donc chercher les applications et configurations correspondantes au rôle de sa machine, et les installer automatiquement sur celle-ci. Reste à savoir comment le minion Salt connaît le rôle de la machine sur laquelle il a été installé !

Pour cela, notre équipe a développé en interne un module de Salt s’interfaçant avec notre référentiel client, Guy. Ce dernier référence toutes les machines de notre parc, et les services rendus par ces machines : c’est ces informations qui sont récupérées par Salt, via ce module. Il inclut également des précisions sur les versions de PHP, MySQL ou Java à utiliser sur les machines. Pour créer une nouvelle machine, l’équipe Support doit donc la renseigner dans Guy, y inscrire son rôle et autres informations nécessaires, puis lancer le déploiement. Salt récupère alors ces informations dans Guy, et gère automatiquement le déploiement selon la configuration correspondante. (Découvrez le détail d’un déploiement dans notre article sur les hyperviseurs).

Interface Salt - Guy

Aujourd’hui, cette automatisation est mise en place pour les rôles les plus importants et les plus répandus sur notre parc (80% des machines). Les autres rôles sont en cours d’industrialisation. Cela prend du temps, car il est nécessaire de tester toutes les combinaisons possibles avant d’utiliser en production ces développements !

Salt et la flexibilité

Pour conclure, le gros avantage de Salt est sa flexibilité : son postulat de base est d’être très modulable et facilement extensible. Cela lui permet notamment de s’interfacer facilement avec diverses applications, et permet à ses utilisateurs de construire un outil puissant. Salt a d’ailleurs gagné un « InfoWorld Technology of the Year Award » en 2014 !

Source technique : Emmanuel Seyman –

Lucie Saunois
Lucie Saunois
Passionnée d'informatique, en particulier de sécurité, depuis qu'elle a rejoint l'OT Group en 2015, Lucie se spécialise dans la vulgarisation technique pour permettre à tous d'appréhender ces sujets parfois complexes.