Browse Source

make autossh fork properly

Antoine Beaupré 9 years ago
parent
commit
7b99c89edf
2 changed files with 11 additions and 7 deletions
  1. 6 3
      files/autossh.init.d
  2. 5 4
      manifests/autossh.pp

+ 6 - 3
files/autossh.init.d

@@ -19,13 +19,16 @@ DESC="autossh"
 NAME=autossh
 USER=$NAME
 DAEMON=/usr/bin/autossh
-DAEMON_ARGS=""
+DAEMON_ARGS="-f"
 PIDFILE=/var/run/$NAME.pid
 SCRIPTNAME=/etc/init.d/$NAME
 
 # Read configuration variable file if it is present
 [ -r /etc/default/$NAME ] && . /etc/default/$NAME
 
+AUTOSSH_PIDFILE=$PIDFILE
+export AUTOSSH_PIDFILE
+
 # Exit if the package is not installed
 [ -x "$DAEMON" ] || exit 0
 
@@ -46,9 +49,9 @@ do_start()
 	#   0 if daemon has been started
 	#   1 if daemon was already running
 	#   2 if daemon could not be started
-        start-stop-daemon --start --quiet --background --user $USER --pidfile $PIDFILE --makepidfile --exec $DAEMON --test > /dev/null \
+        start-stop-daemon --start --quiet --user $USER --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
 		|| return 1
-	start-stop-daemon --start --quiet --background --user $USER --chuid $USER --pidfile $PIDFILE --makepidfile --exec $DAEMON -- \
+	start-stop-daemon --start --quiet --user $USER --chuid $USER --pidfile $PIDFILE --exec $DAEMON -- \
 		$DAEMON_ARGS \
 		|| return 2
 	# The above code will not work for interpreted scripts, use the next

+ 5 - 4
manifests/autossh.pp

@@ -1,7 +1,8 @@
 class sshd::autossh($host,
-              $port = undef, # this should be a remote->local hash
-              $remote_user = undef,
-              $user = 'root',
+                    $port = undef, # this should be a remote->local hash
+                    $remote_user = undef,
+                    $user = 'root',
+                    $pidfile = '/var/run/autossh.pid',
 ) {
   if $port {
     $port_ensure = $port
@@ -22,7 +23,7 @@ class sshd::autossh($host,
       source => 'puppet:///modules/sshd/autossh.init.d';
     '/etc/default/autossh':
       mode    => '0444',
-      content => "USER=$user\nDAEMON_ARGS='-o ServerAliveInterval=15 -o ServerAliveCountMax=4 -q -N -R $port_ensure:localhost:22 $remote_user_ensure@$host'\n";
+      content => "USER=$user\nPIDFILE=$pidfile\nDAEMON_ARGS='-f -o ServerAliveInterval=15 -o ServerAliveCountMax=4 -q -N -R $port_ensure:localhost:22 $remote_user_ensure@$host'\n";
   }
   package { 'autossh':
     ensure => present,