Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/geerlingguy/ansible-role-supervisor
Ansible Role - Supervisor
https://github.com/geerlingguy/ansible-role-supervisor
ansible docker galaxy init process role supervisor supervisord system
Last synced: 17 days ago
JSON representation
Ansible Role - Supervisor
- Host: GitHub
- URL: https://github.com/geerlingguy/ansible-role-supervisor
- Owner: geerlingguy
- License: mit
- Created: 2017-06-03T04:27:24.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-07-16T19:23:41.000Z (4 months ago)
- Last Synced: 2024-10-10T04:06:31.952Z (about 1 month ago)
- Topics: ansible, docker, galaxy, init, process, role, supervisor, supervisord, system
- Language: Shell
- Homepage: https://galaxy.ansible.com/geerlingguy/supervisor/
- Size: 52.7 KB
- Stars: 96
- Watchers: 5
- Forks: 81
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# Ansible Role: Supervisor
[![CI](https://github.com/geerlingguy/ansible-role-supervisor/workflows/CI/badge.svg?event=push)](https://github.com/geerlingguy/ansible-role-supervisor/actions?query=workflow%3ACI)
An Ansible Role that installs [Supervisor](http://supervisord.org/) on Linux.
## Requirements
Python `pip` should be installed. If it is not already installed, you can use the `geerlingguy.pip` Ansible role to install Pip prior to running this role.
## Role Variables
Available variables are listed below, along with default values (see `defaults/main.yml`):
supervisor_version: ''
Install a specific version of Supervisor by setting it here. See [available Supervisor versions](https://pypi.python.org/pypi/supervisor) on Pypi. If no version is set, it will install the latest stable version of Supervisor when the role is run.
supervisor_started: true
supervisor_enabled: trueChoose whether to use an init script or systemd unit configuration to start Supervisor when it's installed and/or after a system boot.
supervisor_config_path: /etc/supervisor
The path where Supervisor configuration should be stored.
supervisor_programs:
- name: 'foo'
command: /bin/cat
state: present
- name: 'apache'
command: apache2ctl -DFOREGROUND
state: present
configuration: |
autostart=true
autorestart=true
startretries=1
startsecs=1
redirect_stderr=true
stderr_logfile=/var/log/apache-err.log
stdout_logfile=/var/log/apache-out.log
user=root
killasgroup=true
stopasgroup=true`supervisor_programs` is an empty list by default; you can define a list of `program`s to be managed by Supervisor. If you set `state` to `present`, then a configuration file for the program (named `[program-name-here].conf`) will be added to the `conf.d` path included by the global Supervisor configuration. You can also manage program-level configuration on your own, outside this role, if you need more flexibility.
supervisor_nodaemon: false
Set to `true` if you need to run Supervisor in the foreground.
supervisor_log_dir: /var/log/supervisor
The location where Supervisor logs will be stored.
supervisor_user: root
supervisor_password: 'my_secret_password'The user under which `supervisord` will be run, and the password to be used when connecting to Supervisor's HTTP server (either for `supervisorctl` access, or when viewing the administrative UI).
supervisor_unix_http_server_password_protect: true
supervisor_inet_http_server_password_protect: truePassword protection can be turned off for Unix HTTP and Inet HTTP by setting these variables to `false`, This would disable password protection for `supervisorctl` as well.
supervisor_unix_http_server_enable: true
supervisor_unix_http_server_socket_path: /var/run/supervisor.sockWhether to enable the UNIX socket-based HTTP server, and the socket file to use if enabled.
> **Note**: By default, this role enables an HTTP server over a UNIX socket that can be accessed locally using the `_user` and `_password` defined earlier. Make sure you set a secure `supervisor_password` to prevent unauthorized access! (Or, if you don't need to HTTP server nor need to use `supervisorctl`, you should disable the UNIX http server by setting this variable to `false`).
supervisor_inet_http_server_enable: false
supervisor_inet_http_server_port: '*:9001'Whether to enable the TCP-based HTTP server, and the interface and port on which the server should listen if enabled.
## Dependencies
None.
## Example Playbook
- hosts: all
roles:
- geerlingguy.pip
- geerlingguy.supervisorIf you need to use `supervisorctl`, you can either use [Ansible's built-in `supervisorctl` module](https://docs.ansible.com/ansible/latest/collections/community/general/supervisorctl_module.html) for management, or run it like so (accounting for the variable path to the configuration directory):
supervisorctl -c /etc/supervisor/supervisord.conf -u root -p [password] status all
## License
MIT / BSD
## Author Information
This role was created in 2017 by [Jeff Geerling](https://www.jeffgeerling.com/), author of [Ansible for DevOps](https://www.ansiblefordevops.com/).