$source=undef,
$content=undef,
$max_clients=200,
- $ensure=present,
+ Enum['present','absent'] $ensure = 'present',
$sslname=undef,
) {
include rsync
$fname_real_rsync = "/etc/rsyncd-${name}.conf"
$fname_real_stunnel = "/etc/rsyncd-${name}-stunnel.conf"
- case $ensure {
- present,absent: {}
- default: { fail ( "Invald ensure `${ensure}' for ${name}" ) }
- }
-
$ensure_service = $ensure ? {
present => running,
absent => stopped,
ensure => $ensure,
content => $content,
source => $source,
- owner => 'root',
- group => 'root',
- mode => '0444',
}
- file { "/etc/systemd/system/rsyncd-${name}@.service":
+ $service_file = "/etc/systemd/system/rsyncd-${name}@.service"
+ $socket_file = "/etc/systemd/system/rsyncd-${name}.socket"
+ $systemd_service = "rsyncd-${name}.socket"
+
+ # if we enable the service, we want the files before the service.
+ # if we remove the service, we want the service disabled before the files
+ # go away.
+ $service_subscribe = $ensure ? {
+ present => [
+ File[$service_file],
+ File[$socket_file],
+ ],
+ default => [],
+ }
+ $service_before = $ensure ? {
+ present => [],
+ default => [
+ File[$service_file],
+ File[$socket_file],
+ ],
+ }
+
+ file { $service_file:
ensure => $ensure,
content => template('rsync/systemd-rsyncd.service.erb'),
- owner => 'root',
- group => 'root',
- mode => '0444',
require => File[$fname_real_rsync],
notify => Exec['systemctl daemon-reload'],
}
- file { "/etc/systemd/system/rsyncd-${name}.socket":
+ file { $socket_file:
ensure => $ensure,
content => template('rsync/systemd-rsyncd.socket.erb'),
- owner => 'root',
- group => 'root',
- mode => '0444',
- notify => [
- Exec['systemctl daemon-reload'],
- Service["rsyncd-${name}.socket"],
- ],
+ notify => Exec['systemctl daemon-reload'],
}
- service { "rsyncd-${name}.socket":
+ service { $systemd_service:
ensure => $ensure_service,
enable => $ensure_enable,
- require => [
- Exec['systemctl daemon-reload'],
- File["/etc/systemd/system/rsyncd-${name}@.service"],
- File["/etc/systemd/system/rsyncd-${name}.socket"],
- ],
+ notify => Exec['systemctl daemon-reload'],
provider => systemd,
+ before => $service_before,
+ subscribe => $service_subscribe,
}
if $sslname {
file { $fname_real_stunnel:
ensure => $ensure,
content => template('rsync/systemd-rsyncd-stunnel.conf.erb'),
- owner => 'root',
- group => 'root',
- mode => '0444',
require => File["/etc/ssl/debian/certs/${sslname}.crt-chained"],
}
file { "/etc/systemd/system/rsyncd-${name}-stunnel@.service":
ensure => $ensure,
content => template('rsync/systemd-rsyncd-stunnel.service.erb'),
- owner => 'root',
- group => 'root',
- mode => '0444',
require => File[$fname_real_stunnel],
notify => Exec['systemctl daemon-reload'],
}
file { "/etc/systemd/system/rsyncd-${name}-stunnel.socket":
ensure => $ensure,
content => template('rsync/systemd-rsyncd-stunnel.socket.erb'),
- owner => 'root',
- group => 'root',
- mode => '0444',
notify => [
Exec['systemctl daemon-reload'],
Service["rsyncd-${name}-stunnel.socket"]