summaryrefslogtreecommitdiff
path: root/manifests/service.pp
diff options
context:
space:
mode:
Diffstat (limited to 'manifests/service.pp')
-rw-r--r--manifests/service.pp52
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 }
+}