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