Commit f6a7e2b5 by John Jarvis

updates for ora/discern

parent 6700feac
...@@ -8,23 +8,27 @@ ...@@ -8,23 +8,27 @@
openid_workaround: True openid_workaround: True
roles: roles:
- common - common
- role: nginx # - role: nginx
nginx_sites: # nginx_sites:
- cms # - cms
- lms # - lms
- lms-preview # - lms-preview
- ora # - ora
- xqueue # - xqueue
- xserver # - xserver
- edxlocal # - edxlocal
- mongo # - role: supervisor
- edxapp # supervisor_servers:
- { role: 'rabbitmq', rabbitmq_ip: '127.0.0.1' } # - forum
- { role: 'edxapp', celery_worker: True } # - lms
- oraclejdk # - mongo
- elasticsearch # - edxapp
- forum # - { role: 'rabbitmq', rabbitmq_ip: '127.0.0.1' }
- { role: "xqueue", update_users: True } # - { role: 'edxapp', celery_worker: True }
- xserver # - oraclejdk
- ora # - elasticsearch
# - forum
# - { role: "xqueue", update_users: True }
# - xserver
# - ora
- discern - discern
...@@ -6,6 +6,8 @@ data_dir: /edx/var ...@@ -6,6 +6,8 @@ data_dir: /edx/var
app_dir: /edx/app app_dir: /edx/app
log_dir: "{{ data_dir }}/log" log_dir: "{{ data_dir }}/log"
venvs_dir: "{{ app_dir }}/venvs" venvs_dir: "{{ app_dir }}/venvs"
bin_dir: /edx/bin
cfg_dir: /edx/etc
os_name: ubuntu os_name: ubuntu
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
- name: common | Create common directories - name: common | Create common directories
file: > file: >
path={{ data_dir }} path={{ item }}
state=directory state=directory
owner=root owner=root
group=root group=root
...@@ -17,6 +17,8 @@ ...@@ -17,6 +17,8 @@
- "{{ app_dir }}" - "{{ app_dir }}"
- "{{ log_dir }}" - "{{ log_dir }}"
- "{{ venvs_dir }}" - "{{ venvs_dir }}"
- "{{ bin_dir }}"
- "{{ cfg_dir }}"
- name: common | Install role-independent useful system packages - name: common | Install role-independent useful system packages
# do this before log dir setup; rsyslog package guarantees syslog user present # do this before log dir setup; rsyslog package guarantees syslog user present
......
DISCERN_NGINX_PORT: 18070 DISCERN_NGINX_PORT: 18070
DISCERN_BASIC_AUTH: False DISCERN_BASIC_AUTH: False
DISCERN_MEMCACHE: [ 'localhost:11211' ]
DISCERN_AWS_ACCESS_KEY_ID: ""
DISCERN_AWS_SECRET_ACCESS_KEY: ""
DISCERN_BROKER_URL: ""
DISCERN_RESULT_BACKEND: ""
DISCERN_GOOGLE_ANALYTICS_PROPERTY_ID: ""
DISCERN_MYSQL_DB_NAME: 'discern'
DISCERN_MYSQL_USER: 'root'
DISCERN_MYSQL_PASSWORD: ''
DISCERN_MYSQL_HOST: 'localhost'
DISCERN_MYSQL_PORT: '3306'
discern_app_dir: "{{ app_dir }}/discern" discern_app_dir: "{{ app_dir }}/discern"
discern_code_dir: "{{ discern_app_dir }}/discern" discern_code_dir: "{{ discern_app_dir }}/discern"
discern_data_dir: "{{ data_dir }}/discern" discern_data_dir: "{{ data_dir }}/discern"
discern_venv_dir: "{{ venvs_dir }}/discern" discern_venvs_dir: "{{ discern_app_dir }}/venvs"
discern_venv_dir: "{{ discern_venvs_dir }}/discern"
discern_venv_bin: "{{ discern_venv_dir }}/bin" discern_venv_bin: "{{ discern_venv_dir }}/bin"
discern_pre_requirements_file: "{{ discern_code_dir }}/pre-requirements.txt" discern_pre_requirements_file: "{{ discern_code_dir }}/pre-requirements.txt"
discern_post_requirements_file: "{{ discern_code_dir }}/requirements.txt" discern_post_requirements_file: "{{ discern_code_dir }}/requirements.txt"
discern_user: "discern" discern_user: "discern"
discern_ease_venv_dir: "{{ discern_venv_dir }}" discern_ease_venv_dir: "{{ discern_venv_dir }}"
discern_ease_code_dir: "{{ app_dir }}/ease" discern_ease_code_dir: "{{ discern_app_dir }}/ease"
discern_ease_source_repo: https://github.com/edx/ease.git discern_ease_source_repo: https://github.com/edx/ease.git
discern_ease_version: 'HEAD' discern_ease_version: 'HEAD'
discern_ease_pre_requirements_file: "{{ discern_ease_code_dir }}/pre-requirements.txt" discern_ease_pre_requirements_file: "{{ discern_ease_code_dir }}/pre-requirements.txt"
...@@ -25,6 +38,37 @@ discern_branch: dev ...@@ -25,6 +38,37 @@ discern_branch: dev
discern_gunicorn_port: 8070 discern_gunicorn_port: 8070
discern_gunicorn_host: 127.0.0.1 discern_gunicorn_host: 127.0.0.1
discern_env_config:
ACCOUNT_EMAIL_VERIFICATION: "mandatory"
AWS_SES_REGION_NAME: "us-east-1"
DEFAULT_FROM_EMAIL: "registration@example.com"
DNS_HOSTNAME: ""
ELB_HOSTNAME: ""
EMAIL_BACKEND: "django.core.mail.backends.smtp.EmailBackend"
S3_BUCKETNAME: ""
USE_S3_TO_STORE_MODElS: false
discern_auth_config:
AWS_ACCESS_KEY_ID: $DISCERN_AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY: $DISCERN_SECRET_ACCESS_KEY
BROKER_URL: $DISCERN_BROKER_URL
CACHES:
default:
BACKEND: 'django.core.cache.backends.memcached.MemcachedCache'
LOCATION: $DISCERN_MEMCACHE
CELERY_RESULT_BACKEND: $DISCERN_RESULT_BACKEND
DATABASES:
default:
ENGINE: django.db.backends.mysql
HOST: $DISCERN_MYSQL_HOST
NAME: $DISCERN_MYSQL_DB_NAME
PASSWORD: $DISCERN_MYSQL_PASSWORD
PORT: $DISCERN_MYSQL_PORT
USER: $DISCERN_MYSQL_USER
GOOGLE_ANALYTICS_PROPERTY_ID: $DISCERN_GOOGLE_ANALYTICS_PROPERTY_ID
discern_debian_pkgs: discern_debian_pkgs:
- policykit-1 - policykit-1
- python-virtualenv - python-virtualenv
...@@ -36,7 +80,7 @@ discern_debian_pkgs: ...@@ -36,7 +80,7 @@ discern_debian_pkgs:
- libfreetype6-dev - libfreetype6-dev
- libpng12-dev - libpng12-dev
- libxml2-dev - libxml2-dev
- libxslt-dev - libxslt1-dev
- libreadline6 - libreadline6
- libreadline6-dev - libreadline6-dev
- redis-server - redis-server
......
--- ---
#Upload config files for django (auth and env) #Upload config files for django (auth and env)
- name: discern | create discern application config env.json file - name: discern | create discern application config env.json file
template: src=env.json.j2 dest={{app_dir}}/env.json template: src=env.json.j2 dest={{ discern_app_dir }}/env.json
sudo_user: "{{ discern_user }}" sudo_user: "{{ discern_user }}"
notify: notify:
- discern | restart celery - discern | restart celery
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
- deploy - deploy
- name: discern | create discern auth file auth.json - name: discern | create discern auth file auth.json
template: src=auth.json.j2 dest={{app_dir}}/auth.json template: src=auth.json.j2 dest={{ discern_app_dir }}/auth.json
sudo_user: "{{ discern_user }}" sudo_user: "{{ discern_user }}"
notify: notify:
- discern | restart celery - discern | restart celery
...@@ -18,19 +18,8 @@ ...@@ -18,19 +18,8 @@
tags: tags:
- deploy - deploy
#Needed if using redis to prevent memory issues - name: discern | git checkout discern repo into discern_code_dir
- name: discern | change memory commit settings -- needed for redis git: dest={{ discern_code_dir }} repo={{ discern_source_repo }} version={{ discern_branch }}
command: sysctl vm.overcommit_memory=1
- name: discern | set permissions on app_dir sgid for edx
file: path={{app_dir}} owner=root group=edx mode=2775 state=directory
file: path={{venv_dir}} owner=root group=edx mode=2775 state=directory
tags:
- deploy
#Grab both repos or update
- name: discern | git checkout discern repo into discern_dir
git: dest={{discern_dir}} repo={{discern_source_repo}} version={{discern_branch}}
sudo_user: "{{ discern_user }}" sudo_user: "{{ discern_user }}"
notify: notify:
- discern | restart celery - discern | restart celery
...@@ -38,8 +27,8 @@ ...@@ -38,8 +27,8 @@
tags: tags:
- deploy - deploy
- name: discern | git checkout ease repo into ease_dir - name: discern | git checkout ease repo into discern_ease_code_dir
git: dest={{ease_dir}} repo={{ease_source_repo}} version={{ease_branch}} git: dest={{ discern_ease_code_dir}} repo={{ discern_ease_source_repo }} version={{ discern_ease_version }}
sudo_user: "{{ discern_user }}" sudo_user: "{{ discern_user }}"
notify: notify:
- discern | restart celery - discern | restart celery
...@@ -49,7 +38,7 @@ ...@@ -49,7 +38,7 @@
#Numpy has to be a pre-requirement in order for scipy to build #Numpy has to be a pre-requirement in order for scipy to build
- name : install python pre-requirements for discern and ease - name : install python pre-requirements for discern and ease
pip: requirements="{{item}}/pre-requirements.txt" virtualenv="{{ discern_venv_dir }}" state=present pip: requirements={{item}} virtualenv={{ discern_venv_dir }} state=present
sudo_user: "{{ discern_user }}" sudo_user: "{{ discern_user }}"
with_items: with_items:
- "{{ discern_pre_requirements_file }}" - "{{ discern_pre_requirements_file }}"
...@@ -58,7 +47,7 @@ ...@@ -58,7 +47,7 @@
- deploy - deploy
- name : install python requirements for discern and ease - name : install python requirements for discern and ease
pip: requirements="{{item}}/requirements.txt" virtualenv="{{ discern_venv_dir }}" state=present pip: requirements={{item}} virtualenv={{ discern_venv_dir }} state=present
sudo_user: "{{ discern_user }}" sudo_user: "{{ discern_user }}"
with_items: with_items:
- "{{ discern_post_requirements_file }}" - "{{ discern_post_requirements_file }}"
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
with_items: with_items:
- "{{ discern_app_dir }}" - "{{ discern_app_dir }}"
- "{{ discern_data_dir }}" - "{{ discern_data_dir }}"
- "{{ discern_venvs_dir }}"
- name: discern | install debian packages that discern needs - name: discern | install debian packages that discern needs
apt: pkg={{ item }} state=present apt: pkg={{ item }} state=present
...@@ -24,19 +25,29 @@ ...@@ -24,19 +25,29 @@
apt: pkg={{ item }} state=present apt: pkg={{ item }} state=present
with_items: discern_ease_debian_pkgs with_items: discern_ease_debian_pkgs
#Create the templates for upstart services
- name: discern | render celery service from template - name: discern | render celery service from template
template: src=celery.conf.j2 dest=/etc/init/celery.conf owner=root group=edx mode=0664 template: src=celery.conf.j2 dest=/etc/init/celery.conf
notify: discern | restart celery notify: discern | restart celery
- name: discern | render discern service from template - name: discern | render discern service from template
template: src=discern.conf.j2 dest=/etc/init/discern.conf owner=root group=edx mode=0664 template: src=discern.conf.j2 dest=/etc/init/discern.conf
notify: discern | restart discern notify: discern | restart discern
- name: discern | copy sudoers file for discern - name: discern | copy sudoers file for discern
copy: > copy: >
src=sudoers-discern src=sudoers-discern
dest=/etc/sudoers.d/{{ site_name }} dest=/etc/sudoers.d/discern
mode=0440
validate='visudo -cf %s' validate='visudo -cf %s'
#Needed if using redis to prevent memory issues
- name: discern | change memory commit settings -- needed for redis
command: sysctl vm.overcommit_memory=1
- include: deploy.yml - include: deploy.yml
- name: discern | create a symlink for venv python
file: >
src="{{ discern_venv_bin }}/python"
dest={{ cfg_dir }}/python.discern
state=link
{{ auth_config | to_nice_json }} {{ discern_auth_config | to_nice_json }}
\ No newline at end of file
...@@ -11,7 +11,7 @@ respawn limit 3 30 ...@@ -11,7 +11,7 @@ respawn limit 3 30
env DJANGO_SETTINGS_MODULE={{discern_settings}} env DJANGO_SETTINGS_MODULE={{discern_settings}}
chdir {{discern_dir}} chdir {{ discern_code_dir }}
setuid {{discern_user}} setuid {{discern_user}}
exec {{venv_dir}}/bin/python {{discern_dir}}/manage.py celeryd --loglevel=info --settings={{discern_settings}} --pythonpath={{discern_dir}} -B --autoscale={{ ansible_processor_cores * 2 }},1 exec {{ discern_venv_dir }}/bin/python {{ discern_code_dir }}/manage.py celeryd --loglevel=info --settings={{ discern_settings }} --pythonpath={{ discern_code_dir }} -B --autoscale={{ ansible_processor_cores * 2 }},1
...@@ -14,9 +14,9 @@ env WORKERS={{ ansible_processor_cores * 2 }} ...@@ -14,9 +14,9 @@ env WORKERS={{ ansible_processor_cores * 2 }}
env PORT={{ discern_gunicorn_port }} env PORT={{ discern_gunicorn_port }}
env ADDRESS={{ discern_gunicorn_host }} env ADDRESS={{ discern_gunicorn_host }}
env LANG=en_US.UTF-8 env LANG=en_US.UTF-8
env DJANGO_SETTINGS_MODULE={{discern_settings}} env DJANGO_SETTINGS_MODULE={{ discern_settings }}
chdir {{discern_dir}} chdir {{ discern_code_dir }}
setuid {{discern_user}} setuid {{ discern_user }}
exec {{venv_dir}}/bin/gunicorn --preload -b $ADDRESS:$PORT -w $WORKERS --timeout=30 --pythonpath={{discern_dir}} discern.wsgi exec {{ discern_venv_bin }}/gunicorn --preload -b $ADDRESS:$PORT -w $WORKERS --timeout=30 --pythonpath={{ discern_code_dir }} discern.wsgi
{{ env_config | to_nice_json }} {{ discern_env_config | to_nice_json }}
\ No newline at end of file
...@@ -95,7 +95,7 @@ EDXAPP_LMS_PREVIEW_BASIC_AUTH: False ...@@ -95,7 +95,7 @@ EDXAPP_LMS_PREVIEW_BASIC_AUTH: False
edxapp_data_dir: "{{ data_dir }}/edxapp" edxapp_data_dir: "{{ data_dir }}/edxapp"
edxapp_app_dir: "{{ app_dir }}/edxapp" edxapp_app_dir: "{{ app_dir }}/edxapp"
edxapp_log_dir: "{{ log_dir }}/edxapp" edxapp_log_dir: "{{ log_dir }}/edxapp"
edxapp_venvs_dir: "{{ venvs_dir }}/edxapp" edxapp_venvs_dir: "{{ edxapp_app_dir }}/venvs"
edxapp_venv_dir: "{{ edxapp_venvs_dir }}/edxapp" edxapp_venv_dir: "{{ edxapp_venvs_dir }}/edxapp"
edxapp_venv_bin: "{{ edxapp_venv_dir }}/bin" edxapp_venv_bin: "{{ edxapp_venv_dir }}/bin"
edxapp_rbenv_dir: "{{ edxapp_app_dir }}" edxapp_rbenv_dir: "{{ edxapp_app_dir }}"
......
...@@ -6,9 +6,7 @@ ...@@ -6,9 +6,7 @@
template: > template: >
src=cms.env.json.j2 src=cms.env.json.j2
dest={{ edxapp_app_dir }}/cms.env.json dest={{ edxapp_app_dir }}/cms.env.json
mode=640 sudo_user: "{{ edxapp_user }}"
owner={{ edxapp_user }}
group={{ common_web_user }}
tags: tags:
- deploy - deploy
...@@ -16,19 +14,7 @@ ...@@ -16,19 +14,7 @@
template: > template: >
src=cms.auth.json.j2 src=cms.auth.json.j2
dest={{ edxapp_app_dir }}/cms.auth.json dest={{ edxapp_app_dir }}/cms.auth.json
mode=640 sudo_user: "{{ edxapp_user }}"
owner={{ edxapp_user }}
group={{ common_web_user }}
tags:
- deploy
- name: Create CMS log target directory
file: >
path={{ edxapp_log_dir }}/cms
state=directory
owner={{ common_log_user }}
group={{ common_log_user }}
mode=0750
tags: tags:
- deploy - deploy
......
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
- name: edxapp | checkout theme - name: edxapp | checkout theme
git: dest={{app_dir}}/themes/{{edxapp_theme_name}} repo={{edxapp_theme_source_repo}} version={{edxapp_theme_version}} git: dest={{ edxapp_app_dir }}/themes/{{edxapp_theme_name}} repo={{edxapp_theme_source_repo}} version={{edxapp_theme_version}}
when: edxapp_theme_name != '' when: edxapp_theme_name != ''
sudo_user: "{{ edxapp_user }}" sudo_user: "{{ edxapp_user }}"
tags: tags:
......
...@@ -6,9 +6,6 @@ ...@@ -6,9 +6,6 @@
template: > template: >
src=lms-preview.env.json.j2 src=lms-preview.env.json.j2
dest={{ edxapp_app_dir }}/lms-preview.env.json dest={{ edxapp_app_dir }}/lms-preview.env.json
mode=640
owner={{ edxapp_user }}
group={{ common_web_user }}
tags: tags:
- deploy - deploy
...@@ -16,19 +13,6 @@ ...@@ -16,19 +13,6 @@
template: > template: >
src=lms-preview.auth.json.j2 src=lms-preview.auth.json.j2
dest={{ edxapp_app_dir }}/lms-preview.auth.json dest={{ edxapp_app_dir }}/lms-preview.auth.json
mode=640
owner={{ edxapp_user }}
group={{ common_web_user }}
tags:
- deploy
- name: Create lms-preview log target directory
file: >
path={{ edxapp_log_dir }}/lms-preview
state=directory
owner={{ common_log_user }}
group={{ common_log_user }}
mode=0750
tags: tags:
- deploy - deploy
......
...@@ -3,9 +3,7 @@ ...@@ -3,9 +3,7 @@
template: > template: >
src=lms.env.json.j2 src=lms.env.json.j2
dest={{ edxapp_app_dir }}/lms.env.json dest={{ edxapp_app_dir }}/lms.env.json
mode=640 sudo_user: "{{ edxapp_user }}"
owner={{ edxapp_user }}
group={{ common_web_user }}
tags: tags:
- deploy - deploy
...@@ -13,19 +11,7 @@ ...@@ -13,19 +11,7 @@
template: > template: >
src=lms.auth.json.j2 src=lms.auth.json.j2
dest={{ edxapp_app_dir }}/lms.auth.json dest={{ edxapp_app_dir }}/lms.auth.json
mode=640 sudo_user: "{{ edxapp_user }}"
owner={{ edxapp_user }}
group={{ common_web_user }}
tags:
- deploy
- name: Create lms log target directory
file: >
path={{ edxapp_log_dir }}/lms
state=directory
owner={{ common_log_user }}
group={{ common_log_user }}
mode=0750
tags: tags:
- deploy - deploy
......
...@@ -64,4 +64,22 @@ ...@@ -64,4 +64,22 @@
template: src=edx-workers.conf.j2 dest=/etc/init/edx-workers.conf owner=root group=root template: src=edx-workers.conf.j2 dest=/etc/init/edx-workers.conf owner=root group=root
when: "celery_worker is defined" when: "celery_worker is defined"
- name: edxapp | create log directories for service variants
file: >
path={{ edxapp_log_dir }}/{{ item }}
state=directory
owner={{ common_log_user }}
group={{ common_log_user }}
mode=0750
with_items:
- lms
- cms
- lms-preview
- include: deploy.yml - include: deploy.yml
- name: edxapp | create a symlink for venv python
file: >
src="{{ edxapp_venv_bin }}/python"
dest={{ cfg_dir }}/python.edxapp
state=link
...@@ -9,8 +9,6 @@ respawn ...@@ -9,8 +9,6 @@ respawn
respawn limit 3 30 respawn limit 3 30
env PID=/var/tmp/cms.pid env PID=/var/tmp/cms.pid
#env NEW_RELIC_CONFIG_FILE={{app_dir}}/newrelic.ini
#env NEWRELIC={{edxapp_venv_dir}}/bin/newrelic-admin
{% if ansible_processor|length > 0 %} {% if ansible_processor|length > 0 %}
env WORKERS={{ ansible_processor|length * worker_core_mult.cms }} env WORKERS={{ ansible_processor|length * worker_core_mult.cms }}
{% else %} {% else %}
......
...@@ -10,8 +10,6 @@ respawn ...@@ -10,8 +10,6 @@ respawn
respawn limit 3 30 respawn limit 3 30
env PID=/var/tmp/lms.pid env PID=/var/tmp/lms.pid
#env NEW_RELIC_CONFIG_FILE={{app_dir}}/newrelic.ini
#env NEWRELIC={{edxapp_venv_dir}}/bin/newrelic-admin
{% if ansible_processor|length > 0 %} {% if ansible_processor|length > 0 %}
env WORKERS={{ ansible_processor|length * worker_core_mult.lms_preview }} env WORKERS={{ ansible_processor|length * worker_core_mult.lms_preview }}
{% else %} {% else %}
......
...@@ -7,8 +7,6 @@ respawn ...@@ -7,8 +7,6 @@ respawn
respawn limit 3 30 respawn limit 3 30
env PID=/var/tmp/lms.pid env PID=/var/tmp/lms.pid
#env NEW_RELIC_CONFIG_FILE={{app_dir}}/newrelic.ini
#env NEWRELIC={{edxapp_venv_dir}}/bin/newrelic-admin
{% if ansible_processor|length > 0 %} {% if ansible_processor|length > 0 %}
env WORKERS={{ ansible_processor|length * worker_core_mult.lms }} env WORKERS={{ ansible_processor|length * worker_core_mult.lms }}
{% else %} {% else %}
......
...@@ -31,5 +31,12 @@ ...@@ -31,5 +31,12 @@
state=present state=present
encoding=utf8 encoding=utf8
- name: edxlocal | create a database for discern
mysql_db: >
db=discern
state=present
encoding=utf8
- name: edxlocal | install memcached - name: edxlocal | install memcached
apt: pkg=memcached state=present apt: pkg=memcached state=present
...@@ -42,4 +42,9 @@ ...@@ -42,4 +42,9 @@
- forum | restart the forum service - forum | restart the forum service
- include: deploy.yml - include: deploy.yml
- name: forum | create the supervisor config
template: src=forum.conf.j2 dest={{ supervisor_cfg_dir }}/forum.conf
notify:
- forum | restart the forum service
- include: test.yml - include: test.yml
[program:forum]
command={{ forum_supervisor_wrapper }}
priority=999
user={{ common_web_user }}
startsecs=10
stdout_logfile={{ supervisor_log_dir }}/%(program_name)-stdout.log
stderr_logfile={{ supervisor_log_dir }}/%(program_name)-stderr.log
stderr_logfile_maxbytes=1MB
killasgroup=true
stopasgroup=true
auth_basic "Restricted"; auth_basic "Restricted";
auth_basic_user_file /etc/nginx/nginx.htpasswd; auth_basic_user_file /etc/nginx/nginx.htpasswd;
root {{ app_dir }}/main_static; root {{ nginx_app_dir }}/main_static;
index index.html index index.html
proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-Proto https;
...@@ -9,7 +9,7 @@ server { ...@@ -9,7 +9,7 @@ server {
# https://docs.djangoproject.com/en/dev/howto/static-files/#serving-static-files-in-production # https://docs.djangoproject.com/en/dev/howto/static-files/#serving-static-files-in-production
location /static/ { # STATIC_URL location /static/ { # STATIC_URL
alias {{ discern_dir }}/staticfiles/; alias {{ discern_app_dir }}/staticfiles/;
expires 1m; expires 1m;
autoindex on; autoindex on;
} }
......
...@@ -48,7 +48,7 @@ server { ...@@ -48,7 +48,7 @@ server {
# Check security on this # Check security on this
location ~ /static/(?P<file>.*) { location ~ /static/(?P<file>.*) {
root {{app_dir}}; root {{ edxapp_data_dir}};
try_files /staticfiles/$file /course_static/$file =404; try_files /staticfiles/$file /course_static/$file =404;
# return a 403 for static files that shouldn't be # return a 403 for static files that shouldn't be
......
...@@ -6,7 +6,8 @@ ORA_BASIC_AUTH: False ...@@ -6,7 +6,8 @@ ORA_BASIC_AUTH: False
ora_app_dir: "{{ app_dir }}/ora" ora_app_dir: "{{ app_dir }}/ora"
ora_code_dir: "{{ ora_app_dir }}/ora" ora_code_dir: "{{ ora_app_dir }}/ora"
ora_data_dir: "{{ data_dir }}/ora" ora_data_dir: "{{ data_dir }}/ora"
ora_venv_dir: "{{ venvs_dir }}/ora" ora_venvs_dir: "{{ ora_app_dir }}/venvs"
ora_venv_dir: "{{ ora_venvs_dir }}/ora"
ora_venv_bin: "{{ ora_venv_dir }}/bin" ora_venv_bin: "{{ ora_venv_dir }}/bin"
ora_user: "ora" ora_user: "ora"
ora_nltk_data_dir: "{{ ora_data_dir}}/nltk_data" ora_nltk_data_dir: "{{ ora_data_dir}}/nltk_data"
...@@ -17,7 +18,7 @@ ora_pre_requirements_file: "{{ ora_code_dir }}/pre-requirements.txt" ...@@ -17,7 +18,7 @@ ora_pre_requirements_file: "{{ ora_code_dir }}/pre-requirements.txt"
ora_post_requirements_file: "{{ ora_code_dir }}/requirements.txt" ora_post_requirements_file: "{{ ora_code_dir }}/requirements.txt"
ora_ease_venv_dir: "{{ ora_venv_dir }}" ora_ease_venv_dir: "{{ ora_venv_dir }}"
ora_ease_code_dir: "{{ app_dir }}/ease" ora_ease_code_dir: "{{ ora_app_dir }}/ease"
ora_ease_source_repo: https://github.com/edx/ease.git ora_ease_source_repo: https://github.com/edx/ease.git
ora_ease_version: 'HEAD' ora_ease_version: 'HEAD'
ora_ease_pre_requirements_file: "{{ ora_ease_code_dir }}/pre-requirements.txt" ora_ease_pre_requirements_file: "{{ ora_ease_code_dir }}/pre-requirements.txt"
......
...@@ -60,15 +60,15 @@ ...@@ -60,15 +60,15 @@
#Needed for the ease package to work #Needed for the ease package to work
- name: ora | check for the existence of nltk data taggers/maxent_treebank_pos_tagger/english.pickle - name: ora | check for the existence of nltk data taggers/maxent_treebank_pos_tagger/english.pickle
shell: "[ -f {{nltk_data_dir}}/taggers/maxent_treebank_pos_tagger/english.pickle ] && echo 'Found' || echo ''" shell: "[ -f {{ ora_nltk_data_dir }}/taggers/maxent_treebank_pos_tagger/english.pickle ] && echo 'Found' || echo ''"
register: nltk_data_installed register: ora_nltk_data_installed
tags: tags:
- deploy - deploy
- name: ora | install nltk data using rendered shell script - name: ora | install nltk data using rendered shell script
command: "{{ora_ease_venv_dir}}/bin/python -m nltk.downloader -d {{nltk_data_dir}} all" command: "{{ora_ease_venv_dir}}/bin/python -m nltk.downloader -d {{ ora_nltk_data_dir }} all"
when: nltk_data_installed.stdout != "Found" when: ora_nltk_data_installed.stdout != "Found"
sudo_user: "{{ ora_user }}" sudo_user: "{{ ora_user }}"
tags: tags:
- deploy - deploy
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
owner="{{ ora_user }}" owner="{{ ora_user }}"
group="{{ common_web_group }}" group="{{ common_web_group }}"
with_items: with_items:
- "{{ ora_venvs_dir }}"
- "{{ ora_app_dir }}" - "{{ ora_app_dir }}"
- "{{ ora_data_dir }}" - "{{ ora_data_dir }}"
- "{{ ora_app_dir }}/ml_models" - "{{ ora_app_dir }}/ml_models"
...@@ -30,3 +31,9 @@ ...@@ -30,3 +31,9 @@
with_items: ora_ease_debian_pkgs with_items: ora_ease_debian_pkgs
- include: deploy.yml - include: deploy.yml
- name: ora | create a symlink for venv python
file: >
src="{{ ora_venv_bin }}/python"
dest={{ cfg_dir }}/python.ora
state=link
- name: supervisor | restart supervisor
service: >
name=supervisor
state=restarted
...@@ -11,9 +11,8 @@ ...@@ -11,9 +11,8 @@
# Tasks for role supervisor # Tasks for role supervisor
# #
# Overview: # Overview:
# Parameterized role for supervisord # Role for supervisord
# Supervisor templates must exist in the # Installs supervisor in its own venv.
# templates/ dir for each server
# #
# Dependencies: # Dependencies:
# - common # - common
...@@ -22,13 +21,8 @@ ...@@ -22,13 +21,8 @@
# roles: # roles:
# - common # - common
# - role: supervisor # - role: supervisor
# supervisor_servers:
# - ...
--- ---
- fail: supervisor_servers is a required parameter for this role
when: supervisor_servers is not defined
- name: supervisor | create application user - name: supervisor | create application user
user: > user: >
name="{{ supervisor_user }}" name="{{ supervisor_user }}"
...@@ -61,18 +55,28 @@ ...@@ -61,18 +55,28 @@
- name: supervisor | install supervisor in its venv - name: supervisor | install supervisor in its venv
pip: name=supervisor virtualenv="{{supervisor_venv_dir}}" state=present pip: name=supervisor virtualenv="{{supervisor_venv_dir}}" state=present
sudo_user: "{{ supervisor_user }}" sudo_user: "{{ supervisor_user }}"
notify: supervisor | restart supervisor
- name: supervisor | create supervisor upstart job - name: supervisor | create supervisor upstart job
template: src=supervisor-upstart.conf.j2 dest=/etc/init/supervisor.conf template: src=supervisor-upstart.conf.j2 dest=/etc/init/supervisor.conf
notify: supervisor | restart supervisor
- name: supervisor | create supervisor master config - name: supervisor | create supervisor master config
template: src=supervisord.conf.j2 dest={{ supervisor_cfg }} template: src=supervisord.conf.j2 dest={{ supervisor_cfg }}
sudo_user: "{{ supervisor_user }}" sudo_user: "{{ supervisor_user }}"
notify: supervisor | restart supervisor
- name: supervisor | create supervisor configs - name: supervisor | create a symlink for supervisortctl
template: src={{ item }}.conf.j2 dest={{ supervisor_cfg_dir }}/{{ item }}.conf file: >
with_items: supervisor_servers src={{ supervisor_ctl }}
sudo_user: "{{ supervisor_user }}" dest={{ bin_dir }}/{{ supervisor_ctl|basename }}
state=link
- name: supervisor | create a symlink for supervisor cfg
file: >
src={{ supervisor_cfg }}
dest={{ cfg_dir }}/{{ supervisor_cfg|basename }}
state=link
- name: supervisor | ensure supervisor is started - name: supervisor | ensure supervisor is started
service: name=supervisor state=started service: name=supervisor state=started
[program:forum]
command={{ forum_supervisor_wrapper }}
priority=999
startsecs = 5
redirect_stderr = True
autostart=False
user={{ common_web_user }}
...@@ -7,7 +7,7 @@ XQUEUE_BASIC_AUTH: False ...@@ -7,7 +7,7 @@ XQUEUE_BASIC_AUTH: False
xqueue_app_dir: "{{ app_dir }}/xqueue" xqueue_app_dir: "{{ app_dir }}/xqueue"
xqueue_code_dir: "{{ xqueue_app_dir }}/xqueue" xqueue_code_dir: "{{ xqueue_app_dir }}/xqueue"
xqueue_data_dir: "{{ data_dir }}/xqueue" xqueue_data_dir: "{{ data_dir }}/xqueue"
xqueue_venvs_dir: "{{ venvs_dir }}/xqueue" xqueue_venvs_dir: "{{ xqueue_app_dir }}/venvs"
xqueue_venv_dir: "{{ xqueue_venvs_dir }}/xqueue" xqueue_venv_dir: "{{ xqueue_venvs_dir }}/xqueue"
xqueue_venv_bin: "{{ xqueue_venv_dir }}/bin" xqueue_venv_bin: "{{ xqueue_venv_dir }}/bin"
xqueue_user: "xqueue" xqueue_user: "xqueue"
......
...@@ -10,20 +10,20 @@ ...@@ -10,20 +10,20 @@
- deploy - deploy
- name: xqueue | create xqueue application config - name: xqueue | create xqueue application config
template: src=xqueue.env.json.j2 dest={{xqueue_app_dir}}/xqueue.env.json mode=0640 owner={{ xqueue_user }} group=adm template: src=xqueue.env.json.j2 dest={{ xqueue_app_dir }}/xqueue.env.json mode=0644
sudo_user: "{{ xqueue_user }}" sudo_user: "{{ xqueue_user }}"
tags: tags:
- deploy - deploy
- name: xqueue | create xqueue auth file - name: xqueue | create xqueue auth file
template: src=xqueue.auth.json.j2 dest={{xqueue_app_dir}}/xqueue.auth.json mode=0640 owner={{ xqueue_user }} group=adm template: src=xqueue.auth.json.j2 dest={{ xqueue_app_dir }}/xqueue.auth.json mode=0644
sudo_user: "{{ xqueue_user }}" sudo_user: "{{ xqueue_user }}"
tags: tags:
- deploy - deploy
# Do A Checkout # Do A Checkout
- name: xqueue | git checkout xqueue repo into {{app_dir}} - name: xqueue | git checkout xqueue repo into xqueue_code_dir
git: dest={{xqueue_code_dir}} repo={{xqueue_source_repo}} version={{xqueue_version}} git: dest={{ xqueue_code_dir }} repo={{ xqueue_source_repo }} version={{ xqueue_version }}
sudo_user: "{{ xqueue_user }}" sudo_user: "{{ xqueue_user }}"
tags: tags:
- deploy - deploy
...@@ -31,27 +31,29 @@ ...@@ -31,27 +31,29 @@
# Install the python pre requirements into {{ xqueue_venv_dir }} # Install the python pre requirements into {{ xqueue_venv_dir }}
- name : install python pre-requirements - name : install python pre-requirements
pip: requirements="{{xqueue_pre_requirements_file}}" virtualenv="{{xqueue_venv_dir}}" state=present pip: requirements="{{ xqueue_pre_requirements_file }}" virtualenv="{{ xqueue_venv_dir }}" state=present
sudo_user: "{{ xqueue_user }}" sudo_user: "{{ xqueue_user }}"
tags: tags:
- deploy - deploy
# Install the python post requirements into {{ xqueue_venv_dir }} # Install the python post requirements into {{ xqueue_venv_dir }}
- name : install python post-requirements - name : install python post-requirements
pip: requirements="{{xqueue_post_requirements_file}}" virtualenv="{{xqueue_venv_dir}}" state=present pip: requirements="{{ xqueue_post_requirements_file }}" virtualenv="{{ xqueue_venv_dir }}" state=present
sudo_user: "{{ xqueue_user }}" sudo_user: "{{ xqueue_user }}"
tags: tags:
- deploy - deploy
- name: xqueue | syncdb and migrate - name: xqueue | syncdb and migrate
shell: SERVICE_VARIANT=xqueue {{ xqueue_venv_dir }}/bin/django-admin.py syncdb --migrate --noinput --settings=xqueue.aws_settings --pythonpath=/opt/wwc/xqueue shell: >
SERVICE_VARIANT=xqueue {{ xqueue_venv_bin }}/django-admin.py syncdb --migrate --noinput --settings=xqueue.aws_settings --pythonpath={{ xqueue_code_dir }}
when: migrate_db is defined and migrate_db|lower == "yes" when: migrate_db is defined and migrate_db|lower == "yes"
sudo_user: "{{ xqueue_user }}" sudo_user: "{{ xqueue_user }}"
tags: tags:
- deploy - deploy
- name: xqueue | create users - name: xqueue | create users
shell: SERVICE_VARIANT=xqueue {{ xqueue_venv_dir }}/bin/django-admin.py update_users --settings=xqueue.aws_settings --pythonpath=/opt/wwc/xqueue shell: >
SERVICE_VARIANT=xqueue {{ xqueue_venv_bin }}/django-admin.py update_users --settings=xqueue.aws_settings --pythonpath={{ xqueue_code_dir }}
when: update_users is defined when: update_users is defined
sudo_user: "{{ xqueue_user }}" sudo_user: "{{ xqueue_user }}"
tags: tags:
......
...@@ -13,20 +13,15 @@ ...@@ -13,20 +13,15 @@
createhome=no createhome=no
shell=/bin/false shell=/bin/false
- name: xqueue | create xqueue app dir - name: xqueue | create xqueue app and venv dir
file: > file: >
path="{{ xqueue_app_dir }}" path="{{ xqueue_app_dir }}"
state=directory state=directory
owner="{{ xqueue_user }}" owner="{{ xqueue_user }}"
group="{{ common_web_group }}" group="{{ common_web_group }}"
with_items:
- name: xqueue | create xqueue venvs dir - "{{ xqueue_app_dir }}"
file: > - "{{ xqueue_venvs_dir }}"
path="{{ xqueue_venvs_dir }}"
state=directory
owner="{{ xqueue_user }}"
group="{{ common_web_group }}"
- name: xqueue | install a bunch of system packages on which xqueue relies - name: xqueue | install a bunch of system packages on which xqueue relies
apt: pkg={{','.join(xqueue_debian_pkgs)}} state=present apt: pkg={{','.join(xqueue_debian_pkgs)}} state=present
...@@ -52,3 +47,9 @@ ...@@ -52,3 +47,9 @@
template: src=xqueue_consumer.conf.j2 dest=/etc/init/xqueue_consumer.conf mode=0640 owner=root group=adm template: src=xqueue_consumer.conf.j2 dest=/etc/init/xqueue_consumer.conf mode=0640 owner=root group=adm
- include: deploy.yml - include: deploy.yml
- name: xqueue | create a symlink for venv python
file: >
src="{{ xqueue_venv_bin }}/python"
dest={{ cfg_dir }}/python.xqueue
state=link
...@@ -17,8 +17,8 @@ XSERVER_GRADER_CHECKOUT: False ...@@ -17,8 +17,8 @@ XSERVER_GRADER_CHECKOUT: False
xserver_app_dir: "{{ app_dir }}/xserver" xserver_app_dir: "{{ app_dir }}/xserver"
xserver_code_dir: "{{ xserver_app_dir }}/xserver" xserver_code_dir: "{{ xserver_app_dir }}/xserver"
xserver_data_dir: "{{ data_dir }}/xserver" xserver_data_dir: "{{ data_dir }}/xserver"
xserver_venvs_dir: "{{ venvs_dir }}/xserver" xserver_venvs_dir: "{{ xserver_app_dir }}/venvs"
xserver_venv_dir: "{{ xqueue_venvs_dir }}/xserver" xserver_venv_dir: "{{ xserver_venvs_dir }}/xserver"
xserver_venv_sandbox_dir: "{{ xserver_venv_dir }}-sandbox" xserver_venv_sandbox_dir: "{{ xserver_venv_dir }}-sandbox"
xserver_venv_bin: "{{ xserver_venv_dir }}/bin" xserver_venv_bin: "{{ xserver_venv_dir }}/bin"
xserver_user: "xserver" xserver_user: "xserver"
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
- deploy - deploy
- name: xserver | create xserver application config - name: xserver | create xserver application config
template: src=xserver.env.json.j2 dest={{ xserver_app_dir }}/env.json mode=640 owner=www-data group=adm template: src=xserver.env.json.j2 dest={{ xserver_app_dir }}/env.json
sudo_user: "{{ xserver_user }}" sudo_user: "{{ xserver_user }}"
tags: tags:
- deploy - deploy
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
shell=/bin/false shell=/bin/false
- name: xserver | create xserver app and data dir - name: xserver | create xserver app and data dirs
file: > file: >
path="{{ item }}" path="{{ item }}"
state=directory state=directory
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
group="{{ common_web_group }}" group="{{ common_web_group }}"
with_items: with_items:
- "{{ xserver_app_dir }}" - "{{ xserver_app_dir }}"
- "{{ xserver_venvs_dir }}"
- "{{ xserver_data_dir }}" - "{{ xserver_data_dir }}"
- name: xserver | create sandbox sudoers file - name: xserver | create sandbox sudoers file
...@@ -53,9 +54,6 @@ ...@@ -53,9 +54,6 @@
- "{{ secure_dir }}/files/edx_apparmor_sandbox.j2" - "{{ secure_dir }}/files/edx_apparmor_sandbox.j2"
- "usr.bin.python-sandbox.j2" - "usr.bin.python-sandbox.j2"
- name: xserver | enforce app-armor rules
command: aa-enforce {{ xserver_sandbox_venv_dir }}
- name: xserver | setup upstart script - name: xserver | setup upstart script
template: src=xserver.conf.j2 dest=/etc/init/xserver.conf owner=root group=root template: src=xserver.conf.j2 dest=/etc/init/xserver.conf owner=root group=root
...@@ -63,3 +61,13 @@ ...@@ -63,3 +61,13 @@
copy: src=git_ssh.sh dest=/tmp/git_ssh.sh force=yes owner=root group=adm mode=750 copy: src=git_ssh.sh dest=/tmp/git_ssh.sh force=yes owner=root group=adm mode=750
- include: deploy.yml - include: deploy.yml
- name: xserver | enforce app-armor rules
command: aa-enforce {{ xserver_venv_sandbox_dir }}
- name: xserver | create a symlink for venv python
file: >
src="{{ xserver_venv_bin }}/python"
dest={{ cfg_dir }}/python.xserver
state=link
www-data ALL=({{ xserver_sandbox_user }}) NOPASSWD:{{xserver_sandbox_venv_dir}}/bin/python www-data ALL=({{ xserver_sandbox_user }}) NOPASSWD:{{xserver_venv_sandbox_dir}}/bin/python
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