Puppet module to manage the supervisord process control system.
Functions available to configure
Install supervisord with pip and install an init script if available
include ::supervisord
Install supervisord and install pip if not available.
class { 'supervisord':
install_pip => true,
}
This will download setuptool and install pip with easy_install.
You can pass a specific url with $setuptools_url = 'url'
If you want to use your system package manager you can specify that with supervisord::package_provider
.
You'll also likely need to adjust the supervisord::service_name
to match that installed by the system package. If you're using Debian or Redhat OS families you'll also want to disable the init scripts with supervisord::install_init = false
.
Note: Only Debian and RedHat families have an init script currently.
supervisord::program { 'myprogram':
command => 'command --args',
priority => '100',
environment => {
'HOME' => '/home/myuser',
'PATH' => '/bin:/sbin:/usr/bin:/usr/sbin',
'SECRET' => 'mysecret'
}
}
You may also specify a variable for a hiera lookup to retreive your environment hash. This allows you to reuse existing environment variable hashes.
supervisord::program { 'myprogram':
command => 'command --args',
priority => '100',
env_var => 'my_common_envs'
}
Or you can fully define your programs in hiera:
supervisord::programs:
'myprogram':
command: 'command --args'
autostart: yes
autorestart: 'true'
environment:
HOME: '/home/myuser'
PATH: '/bin:/sbin:/usr/bin:/usr/sbin'
SECRET: 'mysecret'
supervisord::group { 'mygroup':
priority => 100,
programs => ['program1', 'program2', 'program3']
}
supervisord::ctlplugin { 'laforge':
ctl_factory => 'mr.laforge.controllerplugin:make_laforge_controllerplugin'
}
supervisord::eventlistener { 'mylistener':
command => 'command --args',
events => ['PROCESS_STATE', 'PROCESS_STATE_START']
priority => '100',
env_var => 'my_common_envs'
}
supervisord::rpcinterface { 'laforge':
rpcinterface_factory => 'mr.laforge.rpcinterface:make_laforge_rpcinterface'
}
Should you need to run a sequence of command with supervisorctl
you can use the define type supervisord::supervisorctl
supervisord::supervisorctl { 'restart_myapp':
command => 'restart',
process => 'myapp'
}
You can also issue a command without specifying a process.
If you have suggestions or improvements please file an issue or pull request, i'll try and sort them as quickly as possble.
If you submit a pull please try and include tests for the new functionality/fix. The module is tested with Travis-CI.
- Debian init script sourced from the system package.
- RedHat/Centos init script sourced from https://github.com/Supervisor/initscripts