reboot-lock
authorPeter Palfrader <peter@palfrader.org>
Sun, 29 Jan 2012 13:42:48 +0000 (14:42 +0100)
committerPeter Palfrader <peter@palfrader.org>
Sun, 29 Jan 2012 13:42:48 +0000 (14:42 +0100)
modules/debian-org/files/molly-guard-acquire-reboot-lock [new file with mode: 0755]
modules/debian-org/files/rc.local
modules/debian-org/manifests/init.pp

diff --git a/modules/debian-org/files/molly-guard-acquire-reboot-lock b/modules/debian-org/files/molly-guard-acquire-reboot-lock
new file mode 100755 (executable)
index 0000000..dd41a4c
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+# Copyright 2012 Peter Palfrader
+
+l=/var/run/reboot-lock
+exec 3> $l
+
+if ! flock --exclusive -w 0  3; then
+       echo 2>&1 "Cannot acquire reboot lock."
+       exit 1
+fi
+echo "Reboot lock acquired."
+
+ppid="$PPID"
+(
+       while kill -0 "$ppid" 2>/dev/null; do
+               sleep 1
+       done
+) &
+disown
+exit 0
index 4342f89..d947009 100755 (executable)
@@ -10,3 +10,5 @@ if [ -e /proc/sys/kernel/modules_disabled ]; then
          echo 1 > /proc/sys/kernel/modules_disabled || true
        ) & disown
 fi
+
+touch /var/run/reboot-lock
index 029b34b..3d015cf 100644 (file)
@@ -50,6 +50,7 @@ class debian-org {
         "less": ensure => installed;
         "lsb-release": ensure => installed;
         "libfilesystem-ruby1.8": ensure => installed;
+        "molly-guard": ensure => installed;
         "mtr-tiny": ensure => installed;
         "nload": ensure => installed;
         "pciutils": ensure => installed;
@@ -113,6 +114,11 @@ class debian-org {
             source => "puppet:///modules/debian-org/rc.local",
             notify => Exec["rc.local start"],
             ;
+        "/etc/molly-guard/run.d/15-acquire-reboot-lock":
+            mode   => 0755,
+            source => "puppet:///modules/debian-org/molly-guard-acquire-reboot-lock",
+            require => Package["molly-guard"],
+            ;
 
         "/etc/dsa":
             mode   => 0755,