Installer et configurer un serveur distant prend du temps, de l’énergie et nécessite une feuille de route précise pour ne rien oublier d’important. Cela en prend encore plus lorsque l’on doit enchainer en peu de temps l’installation de plusieurs serveurs pour monter une petite architecture web. Heureusement, il existe des solutions logicielles qui permettent d’industrialiser ces tâches qui peuvent paraître ingrates et répétitives. Nous allons voir dans la suite de cet article un bref aperçu des solutions proposées et celle que nous avons sélectionnée.
Provisionner un serveur distant peut se faire automatiquement via des outils logiciels. Il existe actuellement deux grandes solutions open-source qui permettent de gérer finement les problématiques d’installation et de configuration de services sur une ou plusieurs machines distantes : Puppet et Chef. Ces deux solutions sont des outils très performants et flexibles, bien documentés et dont les communautés sont très actives. Il sont parfaitement adaptés pour des structures gérant un nombre significatif de serveurs. De plus, les éditeurs de ces solutions, certes open-source de base, proposent des versions payantes :
– Puppet Enterprise fourni des outils graphiques supplémentaires pour gérer ses installations et supporte les architectures Amazon EC2 et VMware
– Opscode propose de l’hébergement de Chef serveurs.
Cependant, utiliser ces deux solutions et écrire des recettes de configuration n’est pas trivial. Cela nécessite un investissement en temps qui peut paraître excessif pour des petites structures même si les communautés respectives partagent facilement leurs recettes.
Il existe une autre solution logicielle, Sprinkle. Sprinkle est un outil écrit en Ruby. Il apporte la même souplesse d’utilisation que Capistrano pour le déploiement des applications Ruby On Rails. Il s’utilise directement en ligne de commande depuis un poste local et même s’il est écrit en Ruby, il ne nécessite pas l’installation de ce langage sur la machine cible car Sprinkle ne communique avec elle que via le protocole SSH.
L’apprentissage de Sprinkle repose sur la compréhension de 4 concepts :
- le package : ce qui va être installé sur la machine distante
- les policies : un ensemble de packages particuliers pour une machine distante
- les installers : les vecteurs d’installation pour un package (apt, compilation, rubygem)
- les verifiers : les tests à effectuer pour vérifier la bonne installation d’un service
package :imagemagick do description 'Image Magick' apt 'imagemagick' verify do has_executable 'convert' has_executable 'identify' end end
Ce bout de code définit un package :imagemagick qui sera installé via l’installer apt, et dont les verifiers has_executable confirment que le package est bien installé en testant l’existence des exécutables convert et identify.
Ensuite, nous créons la politique d’installation dans un fichier install.rb :
policy :stack, :roles => :app do requires :imagemagick end deployment do delivery :capistrano source do prefix '/usr/local' end end
Enfin, nous paramétrons le fichier deploy.rb qui contient les informations de connexion au serveur distant :
set :user, 'some_user' set :password, 'user_password' set :host_ip, '123.123.123.123' role :app, host_ip set :use_sudo, true default_run_options[:pty] = true
Au final, le lancement de l’installation se fait via la commande sprinkle :
sprinkle -c -s install.rb
Bien évidemment, il serait plus pertinent de ne pas avoir à enregistrer son mot de passe dans le fichier deploy.rb et d’utiliser une authentification par clé publique.
Au final, Sprinkle se révèle être une bonne solution pour provisionner des serveurs distants et ceci pour une structure n’ayant à configurer qu’un nombre limité de serveurs car Sprinkle est à la fois facile à prendre en main et facile à configurer.
Ajouter un commentaire