Want Capistrano to talk to God? Find San Juan
gem install jnewland-san_juan
OR
gem install jnewland-san_juan -s http://gems.github.com
In your Capistrano deploy recipie:
require 'san_juan'
role :app, 'foo.example.com'
role :web, 'bar.example.com'
san_juan.role :app, %w(mongrels memcached)
san_juan.role :web, %w(nginx)
Now, check out cap -T
:
...
cap god:all:quit # Quit god, but not the proce...
cap god:all:reload # Reloading God Config
cap god:all:start # Start god
cap god:all:start_interactive # Start god interactively
cap god:all:status # Describe the status of the ...
cap god:all:terminate # Terminate god and all monit...
cap god:app:mongrels:log # Log mongrels
cap god:app:mongrels:remove # Remove mongrels
cap god:app:mongrels:restart # Restart mongrels
cap god:app:mongrels:start # Start mongrels
cap god:app:mongrels:stop # Stop mongrels
cap god:app:mongrels:unmonitor # Unmonitor mongrels
cap god:app:memcached:log # Log memcached
cap god:app:memcached:remove # Remove memcached
cap god:app:memcached:restart # Restart memcached
cap god:app:memcached:start # Start memcached
cap god:app:memcached:stop # Stop memcached
cap god:app:memcached:unmonitor # Unmonitor memcached
cap god:app:quit # Quit god, but not the proce...
cap god:app:reload # Reload the god config file
cap god:app:start # Start god
cap god:app:start_interactive # Start god interactively
cap god:app:terminate # Terminate god and all monit...
cap god:web:nginx:log # Log nginx
cap god:web:nginx:remove # Remove nginx
cap god:web:nginx:restart # Restart nginx
cap god:web:nginx:start # Start nginx
cap god:web:nginx:stop # Stop nginx
cap god:web:nginx:unmonitor # Unmonitor nginx
cap god:web:quit # Quit god, but not the proce...
cap god:web:reload # Reload the god config file
cap god:web:start # Start god
cap god:web:start_interactive # Start god interactively
cap god:web:terminate # Terminate god and all monit...
...
To make capistrano start, stop, and restart your app using God, override the
deploy:start
, deploy:stop
, and deploy:restart
tasks:
namespace :deploy do
desc "Use god to restart the app"
task :restart do
god.all.reload #ensures any changes to the god config are applied at deploy
god.app.mongrels.restart
# god.web.nginx.restart
# ...
end
desc "Use god to start the app"
task :start do
god.all.start
end
desc "Use god to stop the app"
task :stop do
god.all.terminate
end
end
A few of the tasks in the god:all
namespace require the path to your god
configuration file. This defaults to:
"#{current_path}/config/god/#{role}.god"
This can be changed by setting the god_config_path
capistrano variable:
require 'san_juan'
set :god_config_path, "/path/to/config"
role :app, 'foo.example.com'
role :web, 'bar.example.com'
san_juan.role :app, %w(mongrels memcached)
san_juan.role :web, %w(nginx)