lib/mascherano/tasks/foreman.cap in mascherano-1.1.0 vs lib/mascherano/tasks/foreman.cap in mascherano-1.2.0
- old
+ new
@@ -2,68 +2,78 @@
desc <<-DESC
Export the Procfile to upstart.
You can override any of these defaults by setting the variables shown below.
- set :foreman_cmd, "foreman"
- set :foreman_format, "upstart"
- set :foreman_location, "/etc/init"
- set :foreman_port, 5000
- set :foreman_root, -> { release_path }
- set :foreman_procfile, -> { release_path.join('Procfile') }
- set :foreman_app, -> { fetch(:application) }
- set :foreman_user, -> { fetch(:user) }
- set :foreman_log, -> { shared_path.join('log') }
- set :foreman_pids, false
- set :foreman_concurrency, false
- set :foreman_sudo, false
- set :foreman_roles, :all
+ set :foreman_cmd, "foreman"
+ set :foreman_format, "upstart"
+ set :foreman_location, "/etc/init"
+ set :foreman_port, 5000
+ set :foreman_root, -> { release_path }
+ set :foreman_procfile, -> { release_path.join('Procfile') }
+ set :foreman_app, -> { fetch(:application) }
+ set :foreman_log, -> { shared_path.join('log') }
+ set :foreman_pids, false
+ set :foreman_concurrency, false
+ set :foreman_sudo, false
+ set :foreman_roles, :all
+ set :foreman_servers, -> { release_roles(fetch(:foreman_roles)) }
DESC
task :export do
- on roles(fetch(:foreman_roles)) do
+ on fetch(:foreman_servers) do |host|
within release_path do
- concurrency = fetch(:foreman_concurrency)
- foreman_sudo = fetch(:foreman_sudo)
- foreman_pids = fetch(:foreman_pids)
+ foreman_cmd = fetch(:foreman_cmd)
+ foreman_concurrency = fetch(:foreman_concurrency)
+ foreman_format = fetch(:foreman_format)
+ foreman_location = fetch(:foreman_location)
+ foreman_pids = fetch(:foreman_pids)
+ foreman_sudo = fetch(:foreman_sudo)
+ foreman_user = fetch(:foreman_user, host.user)
- args = [fetch(:foreman_format), fetch(:foreman_location)]
- args << %Q(-f #{fetch(:foreman_procfile)})
- args << %Q(-p #{fetch(:foreman_port)})
- args << %Q(-d #{fetch(:foreman_root)})
- args << %Q(-a #{fetch(:foreman_app)})
- args << %Q(-u #{fetch(:foreman_user)})
- args << %Q(-l #{fetch(:foreman_log)})
- args << %Q(-r #{fetch(:foreman_pids)}) if foreman_pids
- args << %Q(-c #{concurrency}) if concurrency
+ cmd = [foreman_cmd, 'export', foreman_format, foreman_location]
+ cmd << %Q(-f #{fetch(:foreman_procfile)})
+ cmd << %Q(-p #{fetch(:foreman_port)})
+ cmd << %Q(-d #{fetch(:foreman_root)})
+ cmd << %Q(-a #{fetch(:foreman_app)})
+ cmd << %Q(-u #{foreman_user})
+ cmd << %Q(-l #{fetch(:foreman_log)})
+ cmd << %Q(-r #{foreman_pids}) if foreman_pids
+ cmd << %Q(-c #{foreman_concurrency}) if foreman_concurrency
- cmd = "#{fetch(:foreman_cmd)} export #{args.join(' ')}"
-
- if foreman_sudo
- execute "sudo su - -c '#{cmd}'"
- else
- execute cmd
- end
+ execute *cmd
end
end
end
+
+ desc 'Prefixes the foreman command with sudo when :foreman_sudo => true'
+ task :configure_sudo do
+ if fetch(:foreman_sudo)
+ foreman_cmd = fetch(:foreman_cmd).to_s
+ SSHKit.config.command_map.prefix[foreman_cmd].push('sudo')
+ end
+ end
end
+Capistrano::DSL.stages.each do |stage|
+ after stage, 'foreman:configure_sudo'
+end
+
namespace :load do
task :defaults do
- set :foreman_cmd, "foreman"
- set :foreman_format, "upstart"
- set :foreman_location, "/etc/init"
- set :foreman_port, 5000
- set :foreman_root, -> { release_path }
- set :foreman_procfile, -> { release_path.join('Procfile') }
- set :foreman_app, -> { fetch(:application) }
- set :foreman_user, -> { fetch(:user) }
- set :foreman_log, -> { shared_path.join('log') }
- set :foreman_pids, false
- set :foreman_concurrency, false
- set :foreman_sudo, false
- set :foreman_roles, :all
+ set :foreman_cmd, "foreman"
+ set :foreman_format, "upstart"
+ set :foreman_location, "/etc/init"
+ set :foreman_port, 5000
+ set :foreman_root, -> { release_path }
+ set :foreman_procfile, -> { release_path.join('Procfile') }
+ set :foreman_app, -> { fetch(:application) }
+ set :foreman_log, -> { shared_path.join('log') }
+ set :foreman_pids, false
+ set :foreman_concurrency, false
+ set :foreman_sudo, false
+ set :foreman_roles, :all
+ set :foreman_servers, -> { release_roles(fetch(:foreman_roles)) }
end
end
namespace :deploy do
after :updated, 'foreman:export'