diff options
| author | Markus Strauss <Markus@ITstrauss.eu> | 2011-10-27 20:34:29 -0400 |
|---|---|---|
| committer | Markus Strauss <Markus@ITstrauss.eu> | 2011-10-27 20:34:29 -0400 |
| commit | 8bd3fba55a717bae459ead2b03bc7ccdd9f2a82e (patch) | |
| tree | 3926de63459638b055852d0b97eb7540ddac426a /manifests/service | |
| download | puppet-runit-8bd3fba55a717bae459ead2b03bc7ccdd9f2a82e.tar.gz puppet-runit-8bd3fba55a717bae459ead2b03bc7ccdd9f2a82e.tar.bz2 | |
Initial commit
Diffstat (limited to 'manifests/service')
| -rw-r--r-- | manifests/service/enabled.pp | 30 | ||||
| -rw-r--r-- | manifests/service/env.pp | 22 |
2 files changed, 52 insertions, 0 deletions
diff --git a/manifests/service/enabled.pp b/manifests/service/enabled.pp new file mode 100644 index 0000000..1a71f4d --- /dev/null +++ b/manifests/service/enabled.pp @@ -0,0 +1,30 @@ +define runit::service::enabled( $ensure = present ) { + + # enabling the service by creating a symlink in /etc/service + file { "/etc/service/${name}": + target => "/etc/sv/${name}", + ensure => $ensure ? { + present => link, + default => absent, + }, + } + + if $ensure == present { + + # subscribe to any run file changes + File["/etc/sv/${name}/run"] ~> Runit::Service::Enabled[$name] + + # we also require notification from all environment variables + Runit::Service::Env <| service == $name |> { + notify +> Runit::Service::Enabled[$name] + } + + exec { "sv restart ${name}": + subscribe => File["/etc/service/${name}"], + command => "/usr/bin/sv -w 60 restart /etc/sv/${name}", + refreshonly => true, + } + + } + +} diff --git a/manifests/service/env.pp b/manifests/service/env.pp new file mode 100644 index 0000000..3e22d7a --- /dev/null +++ b/manifests/service/env.pp @@ -0,0 +1,22 @@ +# the env $name must be unique +define runit::service::env( $service, $value, $ensure = present ) { + + $envdir = "/etc/sv/${service}/env" + + # create this directory if at least one environment variable is defined + if !defined( File["/etc/sv/${service}/env"] ) { + file{ "/etc/sv/${service}/env": + ensure => directory, + # all unmanaged envs. will be removed + recurse => true, + purge => true, + } + } + + # runit::directory { $envdir: } + file { "${envdir}/${name}": + ensure => $ensure, + content => "${value}\n", + } + +} |
