move rsync service/socket setup into a dsa_systemd::socket_service
authorPeter Palfrader <peter@palfrader.org>
Tue, 10 Sep 2019 07:52:48 +0000 (09:52 +0200)
committerPeter Palfrader <peter@palfrader.org>
Tue, 10 Sep 2019 07:52:48 +0000 (09:52 +0200)
modules/dsa_systemd/manifests/socket_service.pp [new file with mode: 0644]
modules/rsync/manifests/site.pp

diff --git a/modules/dsa_systemd/manifests/socket_service.pp b/modules/dsa_systemd/manifests/socket_service.pp
new file mode 100644 (file)
index 0000000..88459ad
--- /dev/null
@@ -0,0 +1,62 @@
+# define and enable (or disable) a .socket activated .service
+#
+define dsa_systemd::socket_service(
+  Enum['present','absent'] $ensure = 'present',
+  String $service_content,
+  String $socket_content,
+) {
+  $ensure_service = $ensure ? {
+    present => running,
+    absent  => stopped,
+  }
+
+  $ensure_enable = $ensure ? {
+    present => true,
+    absent  => false,
+  }
+
+  $systemd_service = "${name}.socket"
+  $service_file = "/etc/systemd/system/${name}@.service"
+  $socket_file = "/etc/systemd/system/${systemd_service}"
+
+  # if we enable the service, we want the files before the service, so we
+  #   subscribe the service to the files.
+  # if we remove the service, we want the service disabled before the files
+  #   go away, so we say the service needs the files to be handled before.
+  $service_before = $ensure ? {
+    present => [],
+    default => [
+      File[$service_file],
+      File[$socket_file],
+    ],
+  }
+  $service_subscribe = $ensure ? {
+    present => [
+      File[$service_file],
+      File[$socket_file],
+    ],
+    default => [],
+  }
+
+
+  file { $service_file:
+    ensure  => $ensure,
+    content => $service_content,
+    notify  => Exec['systemctl daemon-reload'],
+  }
+
+  file { $socket_file:
+    ensure  => $ensure,
+    content => $socket_file_content,
+    notify  => Exec['systemctl daemon-reload'],
+  }
+
+  service { $systemd_service:
+    ensure    => $ensure_service,
+    enable    => $ensure_enable,
+    notify    => Exec['systemctl daemon-reload'],
+    provider  => systemd,
+    before    => $service_before,
+    subscribe => $service_subscribe,
+  }
+}
index c1e15c2..2ae7038 100644 (file)
@@ -27,48 +27,11 @@ define rsync::site (
                source  => $source,
        }
 
-       $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'),
-               require => File[$fname_real_rsync],
-               notify  => Exec['systemctl daemon-reload'],
-       }
-
-       file { $socket_file:
-               ensure  => $ensure,
-               content => template('rsync/systemd-rsyncd.socket.erb'),
-               notify  => Exec['systemctl daemon-reload'],
-       }
-
-       service { $systemd_service:
-               ensure   => $ensure_service,
-               enable   => $ensure_enable,
-               notify   => Exec['systemctl daemon-reload'],
-               provider => systemd,
-               before    => $service_before,
-               subscribe => $service_subscribe,
+       dsa_systemd::socket_service { "rsyncd-${name}":
+               ensure          => $ensure,
+               service_content => template('rsync/systemd-rsyncd.service.erb'),
+               socket_content  => template('rsync/systemd-rsyncd.socket.erb'),
+               require         => File[$fname_real_rsync],
        }
 
        if $sslname {