Fix dependency loop in mirror_health when a service is set to absent: the file need...
authorPeter Palfrader <peter@palfrader.org>
Fri, 11 Oct 2019 09:13:41 +0000 (11:13 +0200)
committerPeter Palfrader <peter@palfrader.org>
Fri, 11 Oct 2019 09:13:41 +0000 (11:13 +0200)
modules/mirror_health/manifests/service.pp

index fced518..24c6d0d 100644 (file)
@@ -28,11 +28,11 @@ define mirror_health::service (
 
   $service_file = "/etc/systemd/system/mirror-health-${check_service}.service"
 
-  file { $service_file:
-    content => template('mirror_health/mirror-health.service.erb'),
-    notify  => [Exec['systemctl daemon-reload'], Service["mirror-health-${check_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], ],
@@ -41,7 +41,6 @@ define mirror_health::service (
     present => [ File[$service_file], ],
     default => [],
   }
-
   $ensure_service = $ensure ? {
     present => running,
     absent  => stopped,
@@ -50,14 +49,21 @@ define mirror_health::service (
     present => true,
     absent  => false,
   }
+
+  file { $service_file:
+    ensure  => $ensure,
+    content => template('mirror_health/mirror-health.service.erb'),
+    notify  => Exec['systemctl daemon-reload'],
+  }
   service { "mirror-health-${check_service}":
     ensure    => $ensure_service,
     enable    => $ensure_enable,
-    require   => Exec['systemctl daemon-reload'],
+    notify    => Exec['systemctl daemon-reload'],
     before    => $service_before,
     subscribe => $service_subscribe + [ File[ $mirror_health::script ] ],
   }
 
+
   $hosts_file = "${mirror_health::confdir}/${check_service}.hosts"
   $tag = "mirror_health::service::${check_service}::hosts"
   concat { $hosts_file: