73 votes

Comment exécuter des commandes shell sur le serveur dans Capistrano v3?

Je connais Capistrano pour la première fois et j’ai essayé d’utiliser le DSL de Capistrano pour exécuter des commandes shell sur le serveur ('run', 'execute', etc.), mais il semble que cela soit devenu obsolète. Après avoir recherché et recherché un équivalent fonctionnel, je suis toujours perdu.

Code actuel:

 desc 'Do something'
task :do_something
  execute 'echo sometext'
end
 

Sortie:

     cap aborted!
    undefined method `execute' for main:Object
    /Users/Justin/Dropbox/xxxx/xxxx/xxxx/Capfile:45:in `block (2 levels) in <top (required)>'
    /Users/Justin/.rvm/gems/ruby-2.0.0-p247/bundler/gems/capistrano-2dc1627838f9/lib/capistrano/application.rb:12:in `run'
    /Users/Justin/.rvm/gems/ruby-2.0.0-p247/bundler/gems/capistrano-2dc1627838f9/bin/cap:3:in `<top (required)>'
    /Users/Justin/.rvm/gems/ruby-2.0.0-p247/bin/cap:23:in `load'
    /Users/Justin/.rvm/gems/ruby-2.0.0-p247/bin/cap:23:in `<main>'
    /Users/Justin/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `eval'
    /Users/Justin/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `<main>'
    Tasks: TOP => deploy:do_something
 

116voto

lmars Points 1079

Dans Capistrano v3, vous devez spécifier où vous souhaitez exécuter le code en appelant on avec une liste de noms d'hôte, par exemple

 task :execute_on_server do
  on "root@example.com" do
    execute "some_command"
  end
end
 

Si vous avez configuré les rôles, vous pouvez utiliser la méthode roles à votre convenance:

 role :mailserver, "root@mail.example.com"

task :check_mail do
  on roles(:mailserver) do
    execute "some_command"
  end
end
 

Il existe une documentation v3 ici: http://www.capistranorb.com/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X