J'utilise Capistrano pour gérer mon déploiement et j'ai deux rôles différents dans ma configuration -: Web et: Traitement. Ils ont tous les deux l'habitude: Déploiement des tâches de déploiement, mais la tâche: Redémarrer doit être différente pour les deux types de serveur.
alors ma première tentative était quelque chose comme ceci: P>
task :restart, :roles => :web do
run "... web related restart stuff ..."
end
task :restart, :roles => :processing do
run "... processing related restart stuff ..."
end
3 Réponses :
Vous devez utiliser des espaces de noms:
$ cap <stage> # (if using multistage) $ cap web:restart # Restarts web servers $ cap process:restart # Restarts process servers $ cap restart # Restarts both process and web servers
Vous devez utiliser "parallèle" au lieu de "exécuter" dans ce cas: si vous allez utiliser quelque chose, sauf "exécuter" dans différentes tâches, vous feriez mieux de rester à un Parmi les autres réponses. p> Plus d'informations sur la commande 'Parallel' 'est disponible ici: https://github.com/capistrano/capistrano/wiki/2.x-dsl-action-invokation-parallel p> p> P>
Si vous devez appeler la tâche code> Déployer par défaut CODE> et faire un redémarrage personnalisé, etc. Je suis venu avec cette solution:
# Servers
server "importerhost.com", :app, :web, :db, :importer, :primary => true
server "backuphost.com", :app, :web, :db, :backup, :primary => true
set :deploy_to, "/apps/appname"
# Ensure deploy before restart
before 'importer:deploy', 'deploy'
before 'backup:deploy', 'deploy'
# Importer
namespace :importer do
desc "Restart importer service"
task :deploy, :roles => :importer do
sudo "cp #{current_release}/config/importer.conf /etc/init/importer.conf"
sudo "service importer restart N=1"
sudo "service importer restart N=2"
end
end
# Backup
namespace :backup do
desc "Restart backup service"
task :deploy, :roles => :backup do
sudo "cp #{current_release}/config/backup.conf /etc/init/backup.conf"
sudo "service backup restart"
end
end