The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Rex::Commands::Service - Manage System Services

DESCRIPTION

With this module you can manage Linux services.

SYNOPSIS

 use Rex::Commands::Service
     
 service apache2 => "start";
     
 service apache2 => "stop";
     
 service apache2 => "restart";
     
 service apache2 => "status";
    
 service apache2 => "reload";
    
 service apache2 => "ensure", "started";
   
 service apache2 => "ensure", "stopped";

EXPORTED FUNCTIONS

service($service, $action, [$option])

The service function accepts 2 parameters. The first is the service name and the second the action you want to perform.

starting a service
 task "start-service", "server01", sub {
    service apache2 => "start";
 };
stopping a service
 task "stop-service", "server01", sub {
    service apache2 => "stop";
 };
restarting a service
 task "restart-service", "server01", sub {
    service apache2 => "restart";
 };
checking status of a service
 task "status-service", "server01", sub {
    if( service apache2 => "status" ) {
       say "Apache2 is running";
    }
    else {
       say "Apache2 is not running";
    }
 };
reloading a service
 task "reload-service", "server01", sub {
    service apache2 => "reload";
 };
ensure that a service will started at boot time
 task "prepare", sub {
    service apache2 => "ensure", "started";
 };
ensure that a service will NOT be started.
 task "prepare", sub {
    service apache2 => "ensure", "stopped";
 };

This function supports the following hooks:

before_action

For example: before_start, before_stop, before_restart

This gets executed right before the service action.

after_action

For example: after_start, after_stop, after_restart

This gets executed right after the service action.

service_provider_for $os => $type;

To set an other service provider as the default, use this function.

 user "root";
     
 group "db" => "db[01..10]";
 service_provider_for SunOS => "svcadm";
    
 task "start", group => "db", sub {
     service ssh => "restart";
 };

This example will restart the ssh service via svcadm (but only on SunOS, on other operating systems it will use the default).