diff options
Diffstat (limited to 'manifests/service.pp')
-rw-r--r-- | manifests/service.pp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/manifests/service.pp b/manifests/service.pp new file mode 100644 index 0000000..56433fd --- /dev/null +++ b/manifests/service.pp @@ -0,0 +1,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 } +} |