define autossh::tunnel ( $ensure = present, $user, $bind_address = 'localhost', $port, $host = 'localhost', $hostport, $remote_host, $monitor_port = 0, $gatetime = 'absent', $first_poll = 'absent', $poll = 'absent', $maxstart = 'absent', $maxlifetime = 'absent', $logfile = 'absent' ) { include autossh if ($ensure == 'present') { file { "/etc/init.d/autossh-tunnel-${name}": content => template("autossh/autossh-tunnel.erb"), owner => root, group => root, mode => 755, require => Package["autossh"], notify => Service["autossh-tunnel-${name}"], } exec { "autossh-tunnel-${name}_update_rcd": command => "update-rc.d autossh-tunnel-${name} start 18 2 3 4 5 . stop 81 0 1 6 .", creates => "/etc/rc2.d/S18autossh-tunnel-${name}", path => "/bin:/sbin:/usr/sbin:/usr/bin", require => [ Package["autossh"], File["/etc/init.d/autossh-tunnel-${name}"]], } service { "autossh-tunnel-${name}": ensure => running, hasrestart => true, hasstatus => true, require => File["/etc/init.d/autossh-tunnel-${name}"], } } else { exec { "autossh-tunnel-${name}_stop": command => "/etc/init.d/autossh-tunnel-${name} stop", path => "/bin:/sbin:/usr/sbin:/usr/bin", onlyif => "test -x /etc/init.d/autossh-tunnel-${name} && test -e /var/run/autossh-tunnel-${name}.pid", } file { "/etc/init.d/autossh-tunnel-${name}": ensure => absent, require => Exec["autossh-tunnel-${name}_stop"], } exec { "autossh-tunnel-${name}_update_rcd_remove": command => "update-rc.d autossh-tunnel-${name} remove", path => "/bin:/sbin:/usr/sbin:/usr/bin", onlyif => "test -L /etc/rc2.d/S18autossh-tunnel-${name}", require => File["/etc/init.d/autossh-tunnel-${name}"], } } }