restart ntp hourly if not in sync
authorPeter Palfrader <peter@palfrader.org>
Wed, 25 Jan 2017 10:31:38 +0000 (11:31 +0100)
committerPeter Palfrader <peter@palfrader.org>
Wed, 25 Jan 2017 10:31:38 +0000 (11:31 +0100)
modules/debian-org/templates/dsa-puppet-stuff.cron.erb
modules/ntp/files/ntp-restart-if-required [new file with mode: 0755]
modules/ntp/manifests/client.pp

index 3aa7328..48fab72 100644 (file)
@@ -16,3 +16,5 @@ SHELL=/bin/bash
 @daily munin-async [ -d /var/lib/munin-async ] && find /var/lib/munin-async -maxdepth 1 -type f -mtime +30 -delete
 
 @daily root [ -d /var/lib/puppet/clientbucket ] && find /var/lib/puppet/clientbucket -type f -mtime +60 -delete && find /var/lib/puppet/clientbucket -type d -empty -delete
+
+@hourly root ! [ -x /usr/local/sbin/ntp-restart-if-required ] || /usr/local/sbin/ntp-restart-if-required
diff --git a/modules/ntp/files/ntp-restart-if-required b/modules/ntp/files/ntp-restart-if-required
new file mode 100755 (executable)
index 0000000..6252b82
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+[ -e /usr/lib/nagios/plugins/dsa-check-timedatectl ] || exit
+
+/usr/lib/nagios/plugins/dsa-check-timedatectl -s 2>/dev/null
+rc=$?
+
+case "$rc" in
+  1|2)
+    pid=$(pgrep -u ntp ntp)
+    if [ -z "$pid" ]; then
+      service ntp restart
+      exit
+    fi
+
+    age=$(ps -ho etimes "$pid")
+    if [ "$age" -gt 3600 ]; then
+      service ntp restart
+    fi
+    ;;
+  *)
+    ;;
+esac
index 9fd9356..d36b5d4 100644 (file)
@@ -34,4 +34,8 @@ class ntp::client {
        file { '/etc/ntp.keys.d/ntpkey_iff_busoni':
                ensure => absent,
        }
+       file { '/usr/local/sbin/ntp-restart-if-required':
+               source => 'puppet:///modules/ntp/ntp-restart-if-required',
+               mode    => '0555',
+       }
 }