define supervisor::app ( $command = false, $directory = false, $appname = $name, $ensure = running, $user = 'www-data', $source = '' ) { $conf_title = "supervisor-${appname}" $service_title = $conf_title file { $conf_title: path => "/etc/supervisor/conf.d/${appname}.conf", ensure => present, owner => root, group => root, mode => '0644', content => $source ? { '' => template('supervisor/app.erb'), default => undef, }, source => $source ? { '' => undef, default => $source, }, require => File['/etc/supervisor/conf.d'], 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 } }