Il existe plusieurs catégories d'outils ici. Certaines personnes utilisent une combinaison d'outils de ces catégories. J'utilise parfois, par exemple, à la fois Puppet et Capistrano. Voir Puppet or Capistrano - Use the Right Tool for the Job pour une discussion.
Outils de script destiné à déployer une application:
Le schéma général des outils dans cette catégorie est que vous créez un script et/ou d'un fichier de configuration, souvent avec des ensembles de commandes similaires à un Makefile, et L'outil va passer à votre boîte de production, faire un contrôle de votre source et exécuter toutes les autres étapes nécessaires.
Les outils dans cette zone disposent généralement d'installations permettant de restaurer une version précédente. Ils vont donc vérifier votre source dans le répertoire releases /, et créer un lien symbolique de "current" à "releases /" si tout se passe bien. S'il y a un problème, vous pouvez revenir à la version précédente en exécutant une commande qui supprimera "current" et le liera au répertoire/releases précédent.
- Capistrano provient de la communauté Rails mais est d'usage général. Les utilisateurs de Capistrano peuvent être intéressés par deprec, un ensemble de recettes de déploiement pour Capistrano.
- Vlad the Deployer est une alternative à Capistrano, encore une fois de la communauté Rails.
- Écrivez votre propre script shell ou Makefile.
pour obtenir les options des fichiers à la boîte de production:
- Finalisez votre commande de la source. Pas toujours possible si vos boîtes de production manquent d'outils de développement, en particulier d'outils de gestion de code source.
- Vérifiez la source localement, puis fermez le fichier zip/zip. Utilisez scp ou rsync pour copier l'archive tar. Ceci est parfois préféré pour quelque chose comme un déploiement Amazon EC2, où une archive tar compressée peut gagner du temps/de la bande passante.
- Extraire la source localement, puis la rediriger vers la boîte de production.
Outils d'emballage
Utilisez le système d'emballage de votre système d'exploitation pour générer des paquets contenant les fichiers de votre application. Créez un package principal ayant comme dépendances les autres packages dont vous avez besoin. Le système RubyWorks en est un exemple, utilisé pour déployer une pile Rails et un exemple d'application. Ensuite, il faut utiliser apt, yum/rpm, Windows msi ou autre pour déployer une version donnée. La restauration implique la désinstallation et la réinstallation d'une ancienne version.
Outils généraux Destinés à l'installation d'applications/configs et maintenance d'un ensemble de systèmes
Ces outils ne ciblent pas spécifiquement le problème du déploiement d'une application Web, mais le problème plus général du déploiement/maintien Apps/Configurations pour un ensemble de serveurs ou pour les postes de travail d'une entreprise entière. Ils s'adressent plus à l'administrateur système qu'au développeur Web, bien qu'ils puissent tous les trouver utiles.
- Cfengine est un outil de cette catégorie.
- Puppet vise à améliorer sur Cfengine. Il a une courbe d'apprentissage mais beaucoup trouvent qu'il vaut la peine de comprendre comment faire les configs. Une fois que vous l'avez fait, chaque boîte vérifie périodiquement le serveur central et s'assure que tout est à jour. Si quelqu'un modifie un fichier ou modifie une autorisation, celle-ci est détectée et corrigée.Donc, contrairement aux outils de déploiement ci-dessus, Puppet ne met pas seulement les fichiers au bon endroit pour vous, il assure qu'ils restent ainsi.
- Chef est un peu plus jeune que Puppet avec une approche similaire.
- Smartfrog est un autre outil dans cette catégorie.
- Ansible fonctionne avec les fichiers YAML simples et ne nécessitent pas d'agents en cours d'exécution sur les serveurs qu'il gère
Pour une comparaison de ces derniers et beaucoup plus d'outils dans cette catégorie, voir l'article de Wikipedia, Comparison of open source configuration management software.
Wow 7 ans plus tard ... Il existe maintenant une tonne d'outils spécifiques aux outils d'automatisation des applications. Voici une excellente ressource de départ pour en savoir plus: https://en.wikipedia.org/wiki/Application_release_automation –