Capistrano

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Déploiement applicatif à distance par SSH
Écrit en Ruby (DSL de recettes)
Origine Écosystème Ruby on Rails, généralisable à tout stack
Voir aussi Rundeck · Ansible

Capistrano est un outil open source de déploiement et d'exécution de tâches à distance, écrit en Ruby. Il exécute des scripts (« recettes ») sur un ensemble de serveurs via SSH, le plus souvent pour automatiser la mise à jour d'une application web : récupération du code, gestion des releases, migrations de base de données, redémarrage des services applicatifs.

Note : la page source ne comportait qu'une présentation sommaire ; cette fiche a été enrichie à partir de connaissances générales sur l'outil.

Principe

  • Les serveurs cibles sont regroupés par « rôles » (web, app,
 db...), chacun pouvant recevoir un sous-ensemble des tâches du déploiement.
  • Chaque déploiement crée une release horodatée dans un répertoire dédié ; un lien
 symbolique current pointe vers la release active, ce qui permet un
 rollback quasi instantané en cas de problème (simple changement du lien).
  • Des hooks before/after permettent d'insérer des étapes personnalisées
 autour du cycle de déploiement standard (migrations, purge de cache, notification...).

Exemple minimal

# config/deploy.rb
set :application, "monapp"
set :repo_url, "git@exemple.com:mon-organisation/monapp.git"
set :deploy_to, "/var/www/monapp"

server "app01.exemple.com", user: "deploy", roles: %w{app web}
$ cap production deploy

Positionnement

Capistrano se concentre sur le déploiement applicatif (le code et son cycle de release), alors que des outils comme Ansible ou Rundeck couvrent un périmètre plus large (configuration système, orchestration de tâches ad hoc, inventaire). Il reste une option légère quand le besoin se limite à pousser une application par SSH sans vouloir gérer toute la configuration de l'hôte.

Voir aussi

  • Rundeck — orchestration et exécution de jobs à la demande, périmètre plus large
  • Ansible — automatisation de configuration et de déploiement, agentless via SSH