app.pp 865 Bytes
define supervisor::app (
  $app_name = $title,
  $command,
  $directory,
  $user = 'ubuntu',
) {

  $conf_file = "supervisor_${app_name}"
  $service_name = $conf_file

  file { $conf_file:
    path    => "/etc/supervisor/conf.d/${app_name}.conf",
    ensure  => present,
    content => template('supervisor/supervisor.conf.erb'),
    require => Package['supervisor'],
    notify  => Service['supervisord'],
  }

  service { $service_name:
    ensure     => running,
    path       =>  ['/usr/bin'],
    start      => "supervisorctl start $app_name",
    restart    => "supervisorctl restart $app_name",
    stop       => "supervisorctl stop $app_name",
    status     => "supervisorctl status | awk '/^${name}[: ]/{print \$2}' | grep '^RUNNING$'",
    subscribe  => File[$conf_file], 
    hasrestart => false, 
    hasstatus  => false,
    provider   => base
  }
}