53 lines
1.2 KiB
Ruby
53 lines
1.2 KiB
Ruby
module Service
|
|
class Manager
|
|
def initialize(env)
|
|
@env = env
|
|
end
|
|
|
|
def execute(action, command)
|
|
Airbrussh.configure do |config|
|
|
config.command_output = true
|
|
end
|
|
service_role = "service_role_#{action}".to_sym
|
|
role = fetch(service_role)
|
|
on roles(role) do
|
|
execute :sudo, "/bin/systemctl #{command} #{action}"
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
services = %w{tankz}
|
|
|
|
namespace :service do
|
|
task :restart, :param do |task, args|
|
|
services = args[:param] ? [args[:param]] : services
|
|
services.each { |service|
|
|
Service::Manager.new(self).execute(service, 'restart')
|
|
}
|
|
end
|
|
|
|
task :stop, :param do |task, args|
|
|
services = args[:param] ? [args[:param]] : services
|
|
services.each { |service|
|
|
Service::Manager.new(self).execute(service, 'stop')
|
|
}
|
|
end
|
|
|
|
task :start, :param do |task, args|
|
|
services = args[:param] ? [args[:param]] : services
|
|
services.each { |service|
|
|
Service::Manager.new(self).execute(service, 'start')
|
|
}
|
|
end
|
|
|
|
task :status, :param do |task, args|
|
|
services = args[:param] ? [args[:param]] : services
|
|
services.each { |service|
|
|
Service::Manager.new(self).execute(service, 'status')
|
|
}
|
|
end
|
|
end
|
|
|
|
set :service_role_tankz, :app
|