Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
configuration
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
configuration
Commits
d56788f6
Commit
d56788f6
authored
Oct 31, 2013
by
John Jarvis
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #390 from edx/jarv/edxapp-env
Some environment changes to speed up deploys
parents
08c5c421
fbee5b87
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
254 additions
and
132 deletions
+254
-132
playbooks/roles/certs/tasks/main.yml
+5
-2
playbooks/roles/devpi/defaults/main.yml
+15
-2
playbooks/roles/devpi/handlers/main.yml
+7
-4
playbooks/roles/devpi/tasks/main.yml
+44
-18
playbooks/roles/devpi/templates/devpi.conf.j2
+7
-0
playbooks/roles/edxapp/defaults/main.yml
+15
-7
playbooks/roles/edxapp/meta/main.yml
+1
-0
playbooks/roles/edxapp/tasks/deploy.yml
+65
-46
playbooks/roles/edxapp/tasks/main.yml
+14
-12
playbooks/roles/edxapp/tasks/service_variant_config.yml
+4
-4
playbooks/roles/edxapp/templates/edxapp_env.j2
+6
-0
playbooks/roles/ora/tasks/main.yml
+5
-2
playbooks/roles/supervisor/defaults/main.yml
+3
-0
playbooks/roles/supervisor/handlers/main.yml
+1
-1
playbooks/roles/supervisor/tasks/main.yml
+51
-22
playbooks/roles/supervisor/templates/devpi.conf.j2
+0
-7
playbooks/roles/supervisor/templates/supervisor-upstart.conf.j2
+1
-1
playbooks/roles/xqueue/tasks/main.yml
+5
-2
playbooks/roles/xserver/tasks/main.yml
+5
-2
No files found.
playbooks/roles/certs/tasks/main.yml
View file @
d56788f6
...
...
@@ -77,6 +77,9 @@
-
name
:
certs | create a symlink for venv python
file
:
>
src="{{ certs_venv_bin }}/
python
"
dest={{ COMMON_BIN_DIR }}/
python
.certs
src="{{ certs_venv_bin }}/
{{ item }}
"
dest={{ COMMON_BIN_DIR }}/
{{ item }}
.certs
state=link
with_items
:
-
python
-
pip
playbooks/roles/devpi/defaults/main.yml
View file @
d56788f6
---
devpi_venv_dir
:
"
{{
COMMON_APP_DIR
}}/devpi/venvs/devpi"
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
:
/var/devpi/data
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"
playbooks/roles/devpi/handlers/main.yml
View file @
d56788f6
...
...
@@ -13,13 +13,16 @@
---
-
name
:
devpi | restart devpi
supervisorctl
:
>
state=restarted
config={{ supervisor_cfg }}
state=restarted
supervisorctl_path={{ devpi_supervisor_ctl }}
config={{ devpi_supervisor_cfg }}
name=devpi-server
sudo_user
:
"
{{
devpi_supervisor_user
}}"
-
name
:
devpi | start devpi
supervisorctl
:
>
state=started
config={{ supervisor_cfg }}
supervisorctl_path={{ devpi_supervisor_ctl }}
config={{ devpi_supervisor_cfg }}
name=devpi-server
sudo_user
:
"
{{
devpi_supervisor_user
}}"
playbooks/roles/devpi/tasks/main.yml
View file @
d56788f6
...
...
@@ -33,36 +33,62 @@
-
name
:
devpi | create devpi user
user
:
>
name={{ devpi_user }}
s
tate=present
s
hell=/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={{ devpi_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
:
>
name={{ item }}
state=present
state=present
virtualenv={{ devpi_venv_dir }}
sudo_user
:
"
{{
devpi_user
}}"
with_items
:
devpi_pip_pkgs
notify
:
devpi | restart devpi
notify
:
supervisor | restart supervisor
-
name
:
supervisor | ensure supervisor is started
service
:
name=supervisor state=started
-
name
:
devpi | writing supervisor script
template
:
>
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, pip and supervisor
file
:
>
src="{{ devpi_venv_bin }}/{{ item }}"
dest={{ COMMON_BIN_DIR }}/{{ item }}.devpi
state=link
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
-
name
:
devpi | ensure devpi is running
supervisorctl
:
>
state=started
config={{ supervisor_cfg }}
name=devpi-server
# flush queued up handlers so that devpi
# is restarted since downstream roles
# will need to use it
-
meta
:
flush_handlers
playbooks/roles/devpi/templates/devpi.conf.j2
0 → 100644
View file @
d56788f6
[program:devpi-server]
command={{ devpi_venv_bin }}/devpi-server --port {{ devpi_port }} --serverdir {{ devpi_mirror_dir }}
user={{ devpi_supervisor_user }}
priority=999
stdout_logfile={{ devpi_supervisor_log_dir }}/%(program_name)-stdout.log
stderr_logfile={{ devpi_supervisor_log_dir }}/%(program_name)-stderr.log
autostart=True
playbooks/roles/edxapp/defaults/main.yml
View file @
d56788f6
...
...
@@ -111,6 +111,7 @@ edxapp_staticfile_dir: "{{ edxapp_data_dir }}/staticfiles"
edxapp_course_data_dir
:
"
{{
edxapp_data_dir
}}/data"
edxapp_upload_dir
:
"
{{
edxapp_data_dir
}}/uploads"
edxapp_theme_dir
:
"
{{
edxapp_data_dir
}}/themes"
edxapp_pypi_local_mirror
:
"
http://localhost:{{
devpi_port
}}/root/pypi/+simple"
edxapp_workers
:
-
queue
:
low
service_variant
:
cms
...
...
@@ -134,15 +135,22 @@ edxapp_workers:
service_variant
:
lms
concurrency
:
2
edxapp_all_req_files
:
-
"
{{
pre_requirements_file
}}"
-
"
{{
post_requirements_file
}}"
-
"
{{
repo_requirements_file
}}"
-
"
{{
github_requirements_file
}}"
-
"
{{
local_requirements_file
}}"
-
"
{{
sandbox_base_requirements
}}"
-
"
{{
sandbox_local_requirements
}}"
-
"
{{
sandbox_post_requirements
}}"
-
"
{{
edxapp_code_dir
}}/package.json"
-
"
{{
edxapp_code_dir
}}/Gemfile"
# TODO: old style variable syntax is necessary
# here until ansible 1.4
edxapp_deploy_environment
:
# for lists and dictionaries
edxapp_environment
:
LANG
:
$EDXAPP_LANG
NO_PREREQ_INSTALL
:
1
SKIP_WS_MIGRATIONS
:
1
...
...
playbooks/roles/edxapp/meta/main.yml
View file @
d56788f6
...
...
@@ -4,3 +4,4 @@ dependencies:
rbenv_user
:
"
{{
edxapp_user
}}"
rbenv_dir
:
"
{{
edxapp_app_dir
}}"
rbenv_ruby_version
:
"
{{
edxapp_ruby_version
}}"
-
devpi
playbooks/roles/edxapp/tasks/deploy.yml
View file @
d56788f6
...
...
@@ -30,15 +30,14 @@
# Do A Checkout
-
name
:
edxapp | checkout edx-platform repo into {{edxapp_code_dir}}
git
:
dest={{edxapp_code_dir}} repo={{edx_platform_repo}} version={{edx_platform_commit}}
register
:
edx_platform_chec
kout
register
:
ch
kout
sudo_user
:
"
{{
edxapp_user
}}"
tags
:
-
deploy
-
name
:
edxapp | git clean after checking out edx-platform
shell
:
cd {{edxapp_code_dir}} && git clean -xdf
when
:
edx_platform_chec
kout.changed
when
:
ch
kout.changed
sudo_user
:
"
{{
edxapp_user
}}"
tags
:
-
deploy
...
...
@@ -51,16 +50,43 @@
tags
:
-
deploy
-
name
:
edxapp | create checksum for requirements, package.json and Gemfile
shell
:
>
/usr/bin/md5sum {{ " ".join(edxapp_all_req_files) }} 2>/dev/null > /var/tmp/edxapp.req.new
sudo_user
:
"
{{
edxapp_user
}}"
ignore_errors
:
true
when
:
chkout.changed
tags
:
-
deploy
-
stat
:
path=/var/tmp/edxapp.req.new
register
:
new
tags
:
deploy
-
stat
:
path=/var/tmp/edxapp.req.installed
register
:
inst
tags
:
deploy
# Substitute github mirror in all requirements files
-
name
:
edxapp | Updating requirement files for git mirror
command
:
|
/bin/sed -i -e 's/github\.com/{{ COMMON_GIT_MIRROR }}/g' {{ item }}
with_items
:
edxapp_all_req_files
sudo_user
:
"
{{
edxapp_user
}}"
when
:
chkout.changed and not inst.stat.exists or new.stat.md5 != inst.stat.md5
tags
:
deploy
# Ruby plays that need to be run after platform updates.
-
name
:
edxapp | gem install bundler
shell
:
>
gem install bundle
chdir={{ edxapp_code_dir }}
executable=/bin/bash
environment
:
"
{{
edxapp_
deploy_
environment
}}"
environment
:
"
{{
edxapp_environment
}}"
sudo_user
:
"
{{
edxapp_user
}}"
tags
:
-
deploy
when
:
chkout.changed and not inst.stat.exists or new.stat.md5 != inst.stat.md5
tags
:
deploy
-
name
:
edxapp | bundle install
shell
:
>
...
...
@@ -68,37 +94,18 @@
chdir={{ edxapp_code_dir }}
executable=/bin/bash
sudo_user
:
"
{{
edxapp_user
}}"
environment
:
"
{{
edxapp_
deploy_
environment
}}"
tags
:
-
deploy
environment
:
"
{{
edxapp_environment
}}"
when
:
chkout.changed and not inst.stat.exists or new.stat.md5 != inst.stat.md5
tags
:
deploy
# Node play that need to be run after platform updates.
-
name
:
edxapp | Install edx-platform npm dependencies
shell
:
npm install chdir={{ edxapp_code_dir }}
sudo_user
:
"
{{
edxapp_user
}}"
environment
:
"
{{
edxapp_
deploy_
environment
}}"
tags
:
-
deploy
environment
:
"
{{
edxapp_environment
}}"
when
:
chkout.changed and not inst.stat.exists or new.stat.md5 != inst.stat.md5
tags
:
deploy
# Python plays that need to be run after platform updates.
# Substitute github mirror in all requirements files
#
-
name
:
edxapp | Updating requirement files for git mirror
command
:
|
/bin/sed -i -e 's/github\.com/{{ COMMON_GIT_MIRROR }}/g' {{ item }}
with_items
:
-
"
{{
pre_requirements_file
}}"
-
"
{{
post_requirements_file
}}"
-
"
{{
repo_requirements_file
}}"
-
"
{{
github_requirements_file
}}"
-
"
{{
local_requirements_file
}}"
-
"
{{
sandbox_base_requirements
}}"
-
"
{{
sandbox_local_requirements
}}"
-
"
{{
sandbox_post_requirements
}}"
sudo_user
:
"
{{
edxapp_user
}}"
tags
:
-
deploy
# Install the python pre requirements into {{ edxapp_venv_dir }}
-
name
:
edxapp | install python pre-requirements
...
...
@@ -106,20 +113,24 @@
requirements="{{pre_requirements_file}}"
virtualenv="{{edxapp_venv_dir}}"
state=present
extra_args="-i {{
COMMON_PYPI_MIRROR_URL
}}"
extra_args="-i {{
edxapp_pypi_local_mirror
}}"
sudo_user
:
"
{{
edxapp_user
}}"
tags
:
-
deploy
environment
:
"
{{
edxapp_environment
}}"
when
:
chkout.changed and not inst.stat.exists or new.stat.md5 != inst.stat.md5
tags
:
deploy
# Install the python modules into {{ edxapp_venv_dir }}
-
name
:
edxapp | install python base-requirements
# Need to use shell rather than pip so that we can maintain the context of our current working directory; some
# requirements are pathed relative to the edx-platform repo. Using the pip from inside the virtual environment implicitly
# installs everything into that virtual environment.
shell
:
cd {{ edxapp_code_dir }} && {{ edxapp_venv_dir }}/bin/pip install -i {{ COMMON_PYPI_MIRROR_URL }} --exists-action w --use-mirrors -r {{ base_requirements_file }}
shell
:
>
{{ edxapp_venv_dir }}/bin/pip install -i {{ edxapp_pypi_local_mirror }} --exists-action w --use-mirrors -r {{ base_requirements_file }}
chdir={{ edxapp_code_dir }}
environment
:
"
{{
edxapp_environment
}}"
sudo_user
:
"
{{
edxapp_user
}}"
tags
:
-
deploy
when
:
chkout.changed and not inst.stat.exists or new.stat.md5 != inst.stat.md5
tags
:
deploy
# Install the python post requirements into {{ edxapp_venv_dir }}
-
name
:
edxapp | install python post-requirements
...
...
@@ -127,24 +138,25 @@
requirements="{{post_requirements_file}}"
virtualenv="{{edxapp_venv_dir}}"
state=present
extra_args="-i {{
COMMON_PYPI_MIRROR_URL
}}"
extra_args="-i {{
edxapp_pypi_local_mirror
}}"
sudo_user
:
"
{{
edxapp_user
}}"
tags
:
-
deploy
environment
:
"
{{
edxapp_environment
}}"
when
:
chkout.changed and not inst.stat.exists or new.stat.md5 != inst.stat.md5
tags
:
deploy
# Install the final python modules into {{ edxapp_venv_dir }}
-
name
:
edxapp | install python post-post requirements
# Need to use shell rather than pip so that we can maintain the context of our current working directory; some
# requirements are pathed relative to the edx-platform repo. Using the pip from inside the virtual environment implicitly
# installs everything into that virtual environment.
shell
:
cd {{ edxapp_code_dir }} && {{ edxapp_venv_dir }}/bin/pip install -i {{
COMMON_PYPI_MIRROR_URL
}} --exists-action w --use-mirrors -r {{ item }}
shell
:
cd {{ edxapp_code_dir }} && {{ edxapp_venv_dir }}/bin/pip install -i {{
edxapp_pypi_local_mirror
}} --exists-action w --use-mirrors -r {{ item }}
with_items
:
-
"
{{
repo_requirements_file
}}"
-
"
{{
github_requirements_file
}}"
-
"
{{
local_requirements_file
}}"
sudo_user
:
"
{{
edxapp_user
}}"
tags
:
-
deploy
when
:
chkout.changed and not inst.stat.exists or new.stat.md5 != inst.stat.md5
tags
:
deploy
# Install the sandbox python modules into {{ edxapp_venv_dir }}
...
...
@@ -152,15 +164,22 @@
# Need to use shell rather than pip so that we can maintain the context of our current working directory; some
# requirements are pathed relative to the edx-platform repo. Using the pip from inside the virtual environment implicitly
# installs everything into that virtual environment.
shell
:
cd {{ edxapp_code_dir }} && {{ edxapp_venv_dir }}/bin/pip install -i {{
COMMON_PYPI_MIRROR_URL
}} --exists-action w --use-mirrors -r {{ item }}
shell
:
cd {{ edxapp_code_dir }} && {{ edxapp_venv_dir }}/bin/pip install -i {{
edxapp_pypi_local_mirror
}} --exists-action w --use-mirrors -r {{ item }}
with_items
:
-
"
{{
sandbox_base_requirements
}}"
-
"
{{
sandbox_local_requirements
}}"
-
"
{{
sandbox_post_requirements
}}"
when
:
install_sandbox_reqs_into_regular_venv
sudo_user
:
"
{{
edxapp_user
}}"
tags
:
-
deploy
when
:
chkout.changed and not inst.stat.exists or new.stat.md5 != inst.stat.md5
tags
:
deploy
-
name
:
edxapp | create checksum for installed requirements
shell
:
cp /var/tmp/edxapp.req.new /var/tmp/edxapp.req.installed
sudo_user
:
"
{{
edxapp_user
}}"
when
:
chkout.changed
tags
:
deploy
# https://code.launchpad.net/~wligtenberg/django-openid-auth/mysql_fix/+merge/22726
# This is necessary for when syncdb is run and the django_openid_auth module is installed,
...
...
playbooks/roles/edxapp/tasks/main.yml
View file @
d56788f6
...
...
@@ -12,28 +12,20 @@
name="{{ edxapp_user }}" home="{{ edxapp_app_dir }}"
createhome=no shell=/bin/false
-
name
:
edxapp | create edxapp
app dir
-
name
:
edxapp | create edxapp
user dirs
file
:
>
path="{{ item }}" state=directory
owner="{{ edxapp_user }}" group="{{ common_web_group }}"
with_items
:
-
"
{{
edxapp_app_dir
}}"
-
"
{{
edxapp_venvs_dir
}}"
-
"
{{
edxapp_theme_dir
}}"
-
name
:
edxapp | create edxapp log dir
file
:
>
path="{{ edxapp_log_dir }}" state=directory
owner="{{ common_log_user }}" group="{{ common_log_user }}"
-
name
:
edxapp | create edxapp writable dirs
file
:
>
path="{{ item }}" state=directory
owner="{{ edxapp_user }}" group="{{ edxapp_user }}"
with_items
:
-
"
{{
edxapp_staticfile_dir
}}"
-
"
{{
edxapp_theme_dir
}}"
-
name
:
edxapp | create web-writable edxapp data dirs
file
:
>
path="{{ item }}" state=directory
...
...
@@ -53,10 +45,20 @@
mode=0750
with_items
:
service_variants_enabled
-
name
:
edxapp | setup the edxapp env
template
:
>
src=edxapp_env.j2 dest={{ edxapp_app_dir }}/edxapp_env
owner={{ edxapp_user }} group={{ common_web_user }}
mode=0644
-
include
:
deploy.yml
-
name
:
edxapp | create a symlink for venv python
file
:
>
src="{{ edxapp_venv_bin }}/
python
"
dest={{ COMMON_BIN_DIR }}/
python
.edxapp
src="{{ edxapp_venv_bin }}/
{{ item }}
"
dest={{ COMMON_BIN_DIR }}/
{{ item }}
.edxapp
state=link
with_items
:
-
python
-
pip
playbooks/roles/edxapp/tasks/service_variant_config.yml
View file @
d56788f6
...
...
@@ -59,22 +59,22 @@
executable=/bin/bash
chdir={{ edxapp_code_dir }}
sudo_user
:
"
{{
edxapp_user
}}"
when
:
celery_worker is not defined
when
:
c
hkout.changed and c
elery_worker is not defined
with_items
:
service_variants_enabled
environment
:
"
{{
edxapp_
deploy_
environment
}}"
environment
:
"
{{
edxapp_environment
}}"
tags
:
-
deploy
-
name
:
edxapp | syncdb and migrate
shell
:
sudo -u {{ edxapp_user }} SERVICE_VARIANT=lms {{ edxapp_venv_bin}}/django-admin.py syncdb --migrate --noinput --settings=lms.envs.aws --pythonpath={{ edxapp_code_dir }}
when
:
migrate_db is defined and migrate_db|lower == "yes"
when
:
chkout and
migrate_db is defined and migrate_db|lower == "yes"
tags
:
-
deploy
-
name
:
edxapp | db migrate
shell
:
sudo -u {{ edxapp_user }} SERVICE_VARIANT=lms {{ edxapp_venv_bin }}/django-admin.py migrate --noinput --settings=lms.envs.aws --pythonpath={{ edxapp_code_dir }}
when
:
migrate_only is defined and migrate_only|lower == "yes"
when
:
chkout.changed and
migrate_only is defined and migrate_only|lower == "yes"
tags
:
-
deploy
...
...
playbooks/roles/edxapp/templates/edxapp_env.j2
0 → 100644
View file @
d56788f6
# {{ ansible_managed }}
{% for name,value in edxapp_environment.items() %}
{%- if value %}
export {{ name }}="{{ value }}"
{%- endif %}
{% endfor %}
playbooks/roles/ora/tasks/main.yml
View file @
d56788f6
...
...
@@ -30,5 +30,8 @@
-
name
:
ora | create a symlink for venv python
file
:
>
src="{{ ora_venv_bin }}/python"
dest={{ COMMON_BIN_DIR }}/python.ora state=link
src="{{ ora_venv_bin }}/{{ item }}"
dest={{ COMMON_BIN_DIR }}/{{ item }}.ora state=link
with_items
:
-
python
-
pip
playbooks/roles/supervisor/defaults/main.yml
View file @
d56788f6
...
...
@@ -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
}}"
playbooks/roles/supervisor/handlers/main.yml
View file @
d56788f6
-
name
:
supervisor | restart supervisor
service
:
>
name=
supervisor
name=
{{ supervisor_service }}
state=restarted
-
name
:
supervisor | reload supervisor
...
...
playbooks/roles/supervisor/tasks/main.yml
View file @
d56788f6
...
...
@@ -11,22 +11,54 @@
# 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
# - supervisor_service
#
# 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: 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 +67,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 +91,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 +107,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
playbooks/roles/supervisor/templates/devpi.conf.j2
deleted
100644 → 0
View file @
08c5c421
[program:devpi-server]
command={{ devpi_venv_dir }}/bin/devpi-server --port {{ devpi_port }} --serverdir {{ devpi_data_dir }}
priority=999
startsecs = 5
redirect_stderr = True
autostart=True
user={{ devpi_user }}
playbooks/roles/supervisor/templates/supervisor-upstart.conf.j2
View file @
d56788f6
...
...
@@ -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 }}
playbooks/roles/xqueue/tasks/main.yml
View file @
d56788f6
...
...
@@ -44,6 +44,9 @@
-
name
:
xqueue | create a symlink for venv python
file
:
>
src="{{ xqueue_venv_bin }}/
python
"
dest={{ COMMON_BIN_DIR }}/
python
.xqueue
src="{{ xqueue_venv_bin }}/
{{ item }}
"
dest={{ COMMON_BIN_DIR }}/
{{ item }}
.xqueue
state=link
with_items
:
-
python
-
pip
playbooks/roles/xserver/tasks/main.yml
View file @
d56788f6
...
...
@@ -73,7 +73,10 @@
-
name
:
xserver | create a symlink for venv python
file
:
>
src="{{ xserver_venv_bin }}/
python
"
dest={{ COMMON_BIN_DIR }}/
python
.xserver
src="{{ xserver_venv_bin }}/
{{ item }}
"
dest={{ COMMON_BIN_DIR }}/
{{ item }}
.xserver
state=link
with_items
:
-
python
-
pip
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment