From 2723d1d57979aa8a8fc382defc08adac8b9c1a95 Mon Sep 17 00:00:00 2001 From: Peter Palfrader Date: Sun, 29 Jan 2012 14:42:48 +0100 Subject: [PATCH] reboot-lock --- .../files/molly-guard-acquire-reboot-lock | 21 +++++++++++++++++++ modules/debian-org/files/rc.local | 2 ++ modules/debian-org/manifests/init.pp | 6 ++++++ 3 files changed, 29 insertions(+) create mode 100755 modules/debian-org/files/molly-guard-acquire-reboot-lock 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 index 000000000..dd41a4c19 --- /dev/null +++ b/modules/debian-org/files/molly-guard-acquire-reboot-lock @@ -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 diff --git a/modules/debian-org/files/rc.local b/modules/debian-org/files/rc.local index 4342f8910..d947009b3 100755 --- a/modules/debian-org/files/rc.local +++ b/modules/debian-org/files/rc.local @@ -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 diff --git a/modules/debian-org/manifests/init.pp b/modules/debian-org/manifests/init.pp index 029b34b22..3d015cf45 100644 --- a/modules/debian-org/manifests/init.pp +++ b/modules/debian-org/manifests/init.pp @@ -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, -- 2.20.1