define supervisor::app ( $command, $directory, $appname = $name, $ensure = running, $user = 'www-data', ) { $conf_title = "supervisor-${appname}" $service_title = $conf_title file { $conf_title: path => "/etc/supervisor/conf.d/${appname}.conf", ensure => present, content => template('supervisor/app.erb'), require => Package['supervisor'], notify => Service['supervisor'], } service { $service_title: ensure => $ensure, path => ['/usr/bin'], start => "supervisorctl start $appname", restart => "supervisorctl restart $appname", stop => "supervisorctl stop $appname", status => "supervisorctl status | awk '/^${appname}[: ]/{print \$2}' | grep '^RUNNING$'", subscribe => File[$conf_title], hasrestart => false, hasstatus => false, provider => base } }