2010-06-08 8 views
1

Capistrano fonctionne très bien pour être déployé sur un seul serveur. Cependant, j'ai plusieurs serveurs d'API de production pour mon application Web. Lorsque je déploie, mon code doit être déployé sur chaque serveur d'API à la fois. La spécification manuelle de chaque serveur n'est PAS la solution que je recherche (par exemple, je ne veux pas faire "cap api1 deploy, cap api2 deploy").Comment déployer sur plusieurs serveurs de production redondants avec "cap deploy"?

Est-il possible, en utilisant Capistrano, à déployer sur tous les serveurs à la fois, avec un simple « deploy cap »? Je me demande quels sont les changements que je devrais faire un fichier deploy.rb typique, que je dois créer un fichier séparé pour chaque serveur, et si et comment le Capfile aurait besoin d'être changé. De plus, je dois pouvoir spécifier un chemin de déploiement différent pour chaque serveur. Et idéalement, je ne voudrais pas répéter les choses dans différents fichiers de configuration pour les différents serveurs (. Par exemple, ne doivent préciser: référentiel,: application, etc. plusieurs fois).

J'ai passé des heures à chercher sur Google à ce sujet et à regarder des tutoriels, mais je n'ai rien trouvé d'utile.

Voici un extrait de mon fichier en cours de deploy.rb:

set :application, "testapplication" 
set :repository, "ssh://domain.com//srv/hg/#{application}" 
set :scm, :mercurial 

set :deploy_to, "/srv/www/#{application}" 

role :web, "domain.com" 
role :app, "domain.com" 
role :db, "domain.com", :primary => true, :norelease => true 

Devrais-je utiliser l'extension et le faire en plusieurs étapes?

task :deploy_everything do 
    system "cap api1 deploy" 
    system "cap api2 deploy" 
    system "cap api2 deploy" 
end 

Cela pourrait fonctionner, mais je me sens comme ce n'est pas ce que cette extension est destinée à ...

Répondre

0

Il semble que vous pourriez être intéressé par les « serveurs multiples » rubrique sur la Getting Started page. Est-ce ce que vous cherchez?

+0

J'ai vu cela, mais ils ne spécifient que les noms de domaine. Comme je l'ai dit: Je dois spécifier le nom de domaine ET un chemin personnalisé par serveur. Je peux le faire « : rôle libs, « private.capify.org », « mail.capify.org » », mais comment puis-je spécifier également un chemin par serveur (et de manière compatible avec Capistrano)? –

+0

Maintenant que vous avez réitéré l'exigence de chemin personnalisé, je suis un peu perdu. Je n'ai pas beaucoup utilisé le système. –

+0

Okay. Merci d'avoir essayé. –

Questions connexes