Commit 35ade1d1 by John Jarvis

Turns the supervisor role into a parameterized role

This is so that we can have multiple supervisors running
in different virtual envs
parent ae0ad293
---
devpi_app_dir: "{{ COMMON_APP_DIR }}/devpi"
devpi_data_dir: "{{ COMMON_DATA_DIR }}/devpi"
devpi_mirror_dir: "{{ devpi_data_dir }}/data"
devpi_log_dir: "{{ COMMON_LOG_DIR }}/devpi"
devpi_venvs_dir: "{{ devpi_app_dir }}/venvs"
devpi_venv_dir: "{{ devpi_venvs_dir }}/devpi"
devpi_venv_bin: "{{ devpi_venv_dir }}/bin"
devpi_supervisor_ctl: "{{ devpi_venv_bin }}/supervisorctl"
devpi_pip_pkgs:
- devpi-server
- eventlet
devpi_nginx_port: 80
devpi_port: 4040
devpi_data_dir: "{{ COMMON_DATA_DIR }}/devpi"
devpi_user: devpi
devpi_group: devpi
devpi_server_name: 'pypy.*'
devpi_supervisor_user: devpi.supervisor
devpi_supervisor_app_dir: "{{ devpi_app_dir }}/supervisor"
devpi_supervisor_cfg_dir: "{{ devpi_supervisor_app_dir }}/conf.d"
devpi_supervisor_data_dir: "{{ devpi_data_dir }}/supervisor"
devpi_supervisor_cfg: "{{ devpi_supervisor_app_dir }}/supervisor.conf"
devpi_supervisor_log_dir: "{{ devpi_log_dir }}/supervisor"
......@@ -14,14 +14,15 @@
- name: devpi | restart devpi
supervisorctl: >
state=restarted
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
supervisorctl_path={{ devpi_supervisor_ctl }}
config={{ devpi_supervisor_cfg }}
name=devpi-server
sudo_user: "{{ devpi_supervisor_user }}"
- name: devpi | start devpi
supervisorctl: >
state=started
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
supervisorctl_path={{ devpi_supervisor_ctl }}
config={{ devpi_supervisor_cfg }}
name=devpi-server
sudo_user: "{{ devpi_supervisor_user }}"
......@@ -33,23 +33,29 @@
- name: devpi | create devpi user
user: >
name={{ devpi_user }}
home={{ devpi_app_dir }}
shell=/bin/false createhome=no
- name: devpi | create virtualenv directory
- name: devpi | create devpi application directories
file: >
path={{ devpi_venv_dir }}
path={{ item }}
state=directory
owner={{ devpi_user }}
group={{ devpi_group }}
notify: devpi | restart devpi
group={{ devpi_supervisor_user }}
notify: supervisor | restart supervisor
with_items:
- "{{ devpi_app_dir }}"
- "{{ devpi_venv_dir }}"
- name: devpi | create the devpi data directory
- name: devpi | create the devpi data directory, needs write access by the service user
file: >
path={{ devpi_data_dir }}
path={{ item }}
state=directory
owner={{ common_web_user }}
group={{ devpi_group }}
owner={{ devpi_supervisor_user }}
group={{ devpi_user }}
with_items:
- "{{ devpi_data_dir }}"
- "{{ devpi_mirror_dir }}"
- name: devpi | install devpi pip pkgs
pip: >
......@@ -58,15 +64,15 @@
virtualenv={{ devpi_venv_dir }}
sudo_user: "{{ devpi_user }}"
with_items: devpi_pip_pkgs
notify: devpi | restart devpi
notify: supervisor | restart supervisor
- name: devpi | writing supervisor script
template: >
src=devpi.conf.j2 dest={{ supervisor_cfg_dir }}/devpi.conf
owner={{ supervisor_user }} group={{ common_web_user }} mode=0644
notify: devpi | restart devpi
src=devpi.conf.j2 dest={{ devpi_supervisor_cfg_dir }}/devpi.conf
owner={{ devpi_user }} group={{ devpi_user }} mode=0644
notify: supervisor | restart supervisor
- name: devpi | create a symlink for venv python
- name: devpi | create a symlink for venv python, pip and supervisor
file: >
src="{{ devpi_venv_bin }}/{{ item }}"
dest={{ COMMON_BIN_DIR }}/{{ item }}.devpi
......@@ -74,6 +80,13 @@
with_items:
- python
- pip
- supervisorctl
- name: devpi | create a symlink for supervisor config
file: >
src="{{ devpi_supervisor_app_dir }}/supervisord.conf"
dest={{ COMMON_CFG_DIR }}/supervisord.conf.devpi
state=link
# flush queued up handlers so that devpi
# is restarted since downstream roles
......
[program:devpi-server]
command={{ devpi_venv_bin }}/devpi-server --port {{ devpi_port }} --serverdir {{ devpi_data_dir }}
user={{ common_web_user }}
command={{ devpi_venv_bin }}/devpi-server --port {{ devpi_port }} --serverdir {{ devpi_mirror_dir }}
user={{ devpi_supervisor_user }}
priority=999
stdout_logfile={{ supervisor_log_dir }}/%(program_name)-stdout.log
stderr_logfile={{ supervisor_log_dir }}/%(program_name)-stderr.log
stdout_logfile={{ devpi_supervisor_log_dir }}/%(program_name)-stdout.log
stderr_logfile={{ devpi_supervisor_log_dir }}/%(program_name)-stderr.log
autostart=True
......@@ -25,3 +25,6 @@ supervisor_ctl: "{{ supervisor_venv_bin }}/supervisorctl"
supervisor_user: supervisor
supervisor_log_dir: "{{ COMMON_LOG_DIR }}/supervisor"
supervisor_cfg: "{{ supervisor_app_dir }}/supervisord.conf"
# upstart service name and user
supervisor_service: supervisor
supervisor_service_user: "{{ common_web_user }}"
- name: supervisor | restart supervisor
service: >
name=supervisor
name={{ supervisor_service }}
state=restarted
- name: supervisor | reload supervisor
......
......@@ -11,22 +11,53 @@
# Tasks for role supervisor
#
# Overview:
# Role for supervisord
# Installs supervisor in its own venv.
# Role for supervisord, a parameterized role for installing supervisord
#
# By default supervisor will be installed into {{ COMMON_APP_DIR }}/supervisor
# and log to {{ COMMON_LOG_DIR }}/supervisor and run as the
# {{ common_web_user }}
#
# The including supervisor with the following parameters
# will install it into a different location:
#
# - supervisor_app_dir
# - supervisor_data_dir
# - supervisor_log_dir
# - supervisor_venv_dir
# - supervisor_service_user
#
# Dependencies:
# - common
#
# Example play:
#
# # Install in the default location,
# # run as the default user
#
# roles:
# - common
# - role: supervisor
#
# # Install in an alternate directory
# # and run as user "foo"
# - role: supervisor
# supervisor_app_dir: /path/to/supervisor/dir/for/configs
# supervisor_data_dir: /path/to/supervisor/data/dir (for pid and sock files)
# supervisor_log_dir: /path/to/supervisor/log/dir
# supervisor_venv_dir: /path/to/supervisor/venv/dir
# supervisor_service_user: user to run supervisor as
# supervisor_service_name: upstart-service-name
#
---
- name: supervisor | create application user
user: >
name="{{ supervisor_user }}"
home="{{ supervisor_app_dir }}"
createhome=no
shell=/bin/false
- name: supervisor | create supervisor service user
user: >
name="{{ supervisor_service_user }}"
createhome=no
shell=/bin/false
......@@ -35,19 +66,19 @@
name={{ item }}
state=directory
owner={{ supervisor_user }}
group={{ common_web_user }}
group={{ supervisor_service_user }}
with_items:
- "{{ supervisor_app_dir }}"
- "{{ supervisor_venvs_dir }}"
- "{{ supervisor_venv_dir }}"
- "{{ supervisor_cfg_dir }}"
- name: supervisor | create supervisor directories
file: >
name={{ item }}
state=directory
owner={{ common_web_user }}
owner={{ supervisor_service_user }}
group={{ supervisor_user }}
with_items:
- "{{ supervisor_cfg_dir }}"
- "{{ supervisor_data_dir }}"
- "{{ supervisor_log_dir }}"
......@@ -59,14 +90,14 @@
- name: supervisor | create supervisor upstart job
template: >
src=supervisor-upstart.conf.j2 dest=/etc/init/supervisor.conf
src=supervisor-upstart.conf.j2 dest=/etc/init/{{ supervisor_service }}.conf
owner=root group=root
notify: supervisor | restart supervisor
- name: supervisor | create supervisor master config
template: >
src=supervisord.conf.j2 dest={{ supervisor_cfg }}
owner={{ supervisor_user }} group={{ common_web_user }}
owner={{ supervisor_user }} group={{ supervisor_service_user }}
mode=0644
notify: supervisor | restart supervisor
......@@ -75,19 +106,16 @@
src={{ supervisor_ctl }}
dest={{ COMMON_BIN_DIR }}/{{ supervisor_ctl|basename }}
state=link
when: supervisor_service == "supervisor"
notify: supervisor | restart supervisor
- name: supervisor | create a symlink for supervisor cfg
file: >
src={{ supervisor_cfg }}
dest={{ COMMON_CFG_DIR }}/{{ supervisor_cfg|basename }}
src={{ item }}
dest={{ COMMON_CFG_DIR }}/{{ item|basename }}
state=link
- name: supervisor | create a symlink for supervisor cfg dir
file: >
src={{ supervisor_cfg_dir }}
dest={{ COMMON_CFG_DIR }}/supervisor.{{ supervisor_cfg_dir|basename }}
state=link
- name: supervisor | ensure supervisor is started
service: name=supervisor state=started
when: supervisor_service == "supervisor"
with_items:
- "{{ supervisor_cfg }}"
- "{{ supervisor_cfg_dir }}"
notify: supervisor | restart supervisor
......@@ -4,5 +4,5 @@ start on runlevel [2345]
stop on runlevel [!2345]
respawn
setuid {{ common_web_user }}
setuid {{ supervisor_service_user }}
exec {{ supervisor_venv_dir }}/bin/supervisord --nodaemon --configuration {{ supervisor_cfg }}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment