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