10
votes

Comment définissez-vous les mêmes tâches différemment pour différents rôles dans Capistrano?

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


0 commentaires

3 Réponses :


7
votes

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


0 commentaires

1
votes

Vous devez utiliser "parallèle" au lieu de "exécuter" dans ce cas: xxx

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.

Plus d'informations sur la commande 'Parallel' 'est disponible ici: https://github.com/capistrano/capistrano/wiki/2.x-dsl-action-invokation-parallel


0 commentaires

0
votes

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


0 commentaires