summaryrefslogtreecommitdiff
path: root/manifests/service.pp
blob: 56433fd772a064e58f719c1494544edaab0f9f24 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
define runit::service (
  $user    = root,       # the service's user name
  $group   = root,       # the service's group name
  $enable  = true,       # shall the service be linked to /etc/service
  $ensure  = present,    # shall the service be present in /etc/sv
  $logger  = false,      # shall we setup an logging service
  # either one of these must be given:
  $source  = undef,      # either source or content must be defined; 
  $content = undef       # this will be the run script /etc/sv/$name/run
) {

  # resource defaults
  File { owner => root, group => root, mode => 644 }

  $svbase = "/etc/sv/${name}"
  
  # creating the logging sub-service, if requested
  if $logger == true {
    runit::service{ "${name}/log":
      user => $user, group => $group, enable => false, ensure => $ensure, logger => false,
      content => template('runit/logger_run.erb'),
    }
  }
  
  # the main service stuff
  file {
    "${svbase}":
      ensure => $ensure ? {
        present => directory,
        default => absent,
        },
        purge => true,
      ;
    "${svbase}/run":
      content => $content,
      source  => $source,
      ensure  => $ensure,
      mode    => 755,
      ;
  }

  # eventually enabling the service
  if $ensure == present and $enable == true {
    $_ensure_enabled = present
  } else {
    $_ensure_enabled = absent
  }

  debug( "Service ${name}: ${_ensure_enabled}" )

  runit::service::enabled { $name: ensure => $_ensure_enabled }
}