define runit::service( $enabled = true, $content = '', $source = '', $sv_log = false ){
Class['stdlib'] -> Runit::Service[$name]
Class['runit::configure'] -> Runit::Service[$name]
$daemon_root = "${runit::daemon_dir}/${name}"
$daemon_run = "${runit::daemon_dir}/${name}/run"
$service_root = "${runit::service_dir}/${name}"
$log_root = "${daemon_root}/log"
$log_run = "${daemon_root}/log/run"
$sv_log_dir = "/var/log/${name}"
# If $source is empty, use $content, and vice-versa
$use_static_source = empty( $source ) ? {
true => false,
false => true,
}
file {
## The daemon directory
"${name}_daemon_root":
ensure => directory,
path => $daemon_root,
owner => 'root',
group => 'root',
mode => 0755;
## The daemon run script
"${name}_daemon_run":
ensure => present,
path => $daemon_run,
owner => 'root',
group => 'root',
mode => 0755,
source => $use_static_source ? {
false => undef,
true => $source,
},
content => $use_static_source ? {
false => $content,
true => undef,
},
require => File["${name}_daemon_root"];
## The service directory
"${name}_service_root":
ensure => $enabled ? {
false => absent,
default => link,
},
path => $service_root,
target => $daemon_root,
require => File["${name}_daemon_run"];
## Log directory
"${name}_log_root":
ensure => $sv_log ? {
false => absent,
default => directory,
},
path => $log_root,
owner => 'root',
group => 'root',
mode => 0755,
require => File["${name}_daemon_root"];
## Log run script
"${name}_log_run":
ensure => $sv_log ? {
false => absent,
default => file,
},
path => $log_run,
owner => 'root',
group => 'root',
mode => 0755,
content => template( 'runit/service_log.sh.erb' ),
require => File["${name}_log_root"];
"${name}_log_dir":
ensure => $sv_log ? {
true => directory,
false => absent,
},
force => true,
path => $sv_log_dir,
owner => 'root',
group => 'root',
mode => 0755;
}
}