I'm working on a sweet little module to manage ssh tunnels using
Net::SSH and daemons. Before I try to add a service provider in order
to manage daemons, I figured I'd just exec and am running into a very
strange situation.

First, here is a simple proof of concept involving 3 small files:

(Please forgive the overly simplified and abstract examples.. just
trying to keep this as short as possible)

#/tmp/foo.rb:

loop do
  sleep 5
end
#eof

#/tmp/foo_control.rb:

require 'rubygems' unless defined?(Gem)
require 'daemons'

Daemon.run('/tmp/foo.rb')
#eof

Manual runs of ruby /tmp/foo_control.rb start/stop/restart results in
the expected behavior, the (useless) daemon is managable and well
behaved :)

Taking this a bit further, I can involve Puppet like so:

#foo.pp
exec { test_it
  command => "ruby /tmp/foo_control.rb start",
  creates => '/tmp/foo.rb.pid',
  user => 'akosmin',
}

and then I can start the daemon with a simple

sudo puppet apply foo.pp

OK, everything seems great at this point but if I replace foo.rb's
useless sleep with the following ssh tunnel, the daemon appears to
start but then exits but only when exec'd from Puppet. Here's the
updated /tmp/foo.rb:


require 'rubygems'
require 'net/ssh'

Net::SSH.start('box1.example.com, ENV['LOGNAME']) do |ssh|
  ssh.forward.local(7777, box2.example.com, 22)
  ssh.loop { true }
end

Running this manually (ruby /tmp/foo_control.rb start) from a shell
spawns the daemon, no problem. I can start it, query the status, or
stop it. I'm pointing this out in order to spare anyone from wondering
if the ssh bits are working. The problem comes when I simply exec it
via Puppet (see above). It seems like the daemon starts but then after
a second, it dies. Again, I can run the exact command the exec type is
using and everything works as expected. I've added --debug and --trace
and have no additional information to report as the output just tells
me everything is working as expected.

Does anyone have any ideas?

Best,
Adam

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to