Rex::Commands::Service(3pm)

Rex::Commands::Service3pm

Manage system services

Usage

 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";

Overview

With this module you can manage Linux services.

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";
 };

If you need to define a custom command for start, stop, restart, reload or status you can do this with the corresponding options.

 task "prepare", sub {
   service "apache2",
     ensure  => "started",
     start   => "/usr/local/bin/httpd -f /etc/my/httpd.conf",
     stop    => "killall httpd",
     status  => "ps -efww | grep httpd",
     restart => "killall httpd && /usr/local/bin/httpd -f /etc/my/httpd.conf",
     reload  => "killall httpd && /usr/local/bin/httpd -f /etc/my/httpd.conf";
 };

This function supports the following hooks:

before_${action}

For example: "before_start", "before_stop", "before_restart"

This gets executed right before the given service action. All original parameters are passed to it.

after_${action}

For example: "after_start", "after_stop", "after_restart"

This gets executed right after the given service action. All original parameters, and any returned results are passed to it.

service_provider_for $os => $type;

To set another 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).

Releases

5 releases since Debian 9 (Stretch); the text changed 4 times.

  1. 9
  2. 10
  3. 11
  4. 12
  5. 13

From rex 1.16.0-1 in Debian 13 (Trixie). Parsed by carta from the page's man source.