--- /dev/null
+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
+ }
+
+}