Automatiser l'installation de serveurs distants

Développement web
Par mick
19 décembre 2011
Installation de serveurs distants

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
Voici un exemple de package pour installer la suite imagemagick :
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

Articles similaires