Commit 059db560 by Kevin Falcone

We don't deploy ORA1 anymore

parent 8cc22084
# vars for the ORA role
---
ORA_NGINX_PORT: 18060
ORA_GUNICORN_EXTRA: ""
ORA_GUNICORN_EXTRA_CONF: ""
ora_app_dir: "{{ COMMON_APP_DIR }}/ora"
ora_code_dir: "{{ ora_app_dir }}/ora"
ora_data_dir: "{{ COMMON_DATA_DIR }}/ora"
ora_data_course_dir: "{{ ora_data_dir }}/course"
ora_venvs_dir: "{{ ora_app_dir }}/venvs"
ora_venv_dir: "{{ ora_venvs_dir }}/ora"
ora_venv_bin: "{{ ora_venv_dir }}/bin"
ora_user: "ora"
ora_deploy_path: "{{ ora_venv_bin }}:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
ora_source_repo: https://github.com/edx/edx-ora.git
ora_version: 'master'
ora_pre_requirements_file: "{{ ora_code_dir }}/pre-requirements.txt"
ora_post_requirements_file: "{{ ora_code_dir }}/requirements.txt"
ora_ease_venv_dir: "{{ ora_venv_dir }}"
ora_ease_code_dir: "{{ ora_app_dir }}/ease"
ora_ease_source_repo: https://github.com/edx/ease.git
ora_ease_version: 'master'
ora_ease_pre_requirements_file: "{{ ora_ease_code_dir }}/pre-requirements.txt"
ora_ease_post_requirements_file: "{{ ora_ease_code_dir }}/requirements.txt"
ORA_LOGGING_ENV: "prod-grader"
ORA_REQUESTS_TIMEOUT: 5
ORA_QUEUES_TO_PULL_FROM: "open-ended"
ORA_TIME_BETWEEN_XQUEUE_PULLS: 5
ORA_TIME_BETWEEN_EXPIRED_CHECKS: 1800
ORA_GRADER_SETTINGS_DIRECTORY: "grader_settings/"
ORA_MAX_NUMBER_OF_TIMES_TO_RETRY_GRADING: 10
ORA_MIN_TO_USE_ML: 4
ORA_ML_PATH: "machine-learning/"
ORA_ML_MODEL_PATH: "ml_models/"
ORA_TIME_BETWEEN_ML_CREATOR_CHECKS: 300
ORA_TIME_BETWEEN_ML_GRADER_CHECKS: 5
ORA_MIN_TO_USE_PEER: 4
ORA_PEER_GRADER_COUNT: 3
ORA_PEER_GRADER_MINIMUM_TO_CALIBRATE: 3
ORA_PEER_GRADER_MAXIMUM_TO_CALIBRATE: 6
ORA_PEER_GRADER_MIN_NORMALIZED_CALIBRATION_ERROR: 0.5
ORA_EXPIRE_SUBMISSIONS_AFTER: 1296000
ORA_RESET_SUBMISSIONS_AFTER: 600
ORA_LOCAL_LOGLEVEL: "DEBUG"
ORA_DEBUG: false
ORA_SYSLOG_SERVER: "localhost"
ORA_USE_S3_TO_STORE_MODELS: false
ORA_S3_BUCKETNAME: "openended-prod"
ORA_LANG: "en_US.UTF-8"
ORA_USERS:
"xqueue_pull": "password"
"lms": "password"
ORA_XQUEUE_URL: "http://localhost:18040"
ORA_XQUEUE_DJANGO_USER: "lms"
ORA_XQUEUE_DJANGO_PASSWORD: "password"
ORA_XQUEUE_BASIC_AUTH_USER: "{{ COMMON_HTPASSWD_USER }}"
ORA_XQUEUE_BASIC_AUTH_PASSWORD: "{{ COMMON_HTPASSWD_PASS }}"
ORA_DJANGO_USER: "lms"
ORA_DJANGO_PASSWORD: "password"
ORA_URL: "http://localhost:18060"
ORA_MYSQL_DB_NAME: 'ora'
ORA_MYSQL_USER: 'ora001'
ORA_MYSQL_PASSWORD: 'password'
ORA_MYSQL_HOST: 'localhost'
ORA_MYSQL_PORT: '3306'
ORA_AWS_ACCESS_KEY_ID: ''
ORA_AWS_SECRET_ACCESS_KEY: ''
# Default nginx listen port
# These should be overrided if you want
# to serve all content on port 80
ora_gunicorn_workers: 2
ora_gunicorn_port: 8060
ora_gunicorn_host: 127.0.0.1
# ora_env_config and ora_auth_config
# should be overridden for your
# environment. The defaults are
# appropriate for running all edX
# services on a single server.
ora_env_config:
LOGGING_ENV: "{{ ORA_LOGGING_ENV }}"
LOG_DIR: "{{ COMMON_DATA_DIR }}/logs/xqueue"
COURSE_DATA_PATH: "{{ ora_data_course_dir }}"
REQUESTS_TIMEOUT: "{{ ORA_REQUESTS_TIMEOUT }}"
QUEUES_TO_PULL_FROM: "{{ ORA_QUEUES_TO_PULL_FROM }}"
TIME_BETWEEN_XQUEUE_PULLS: "{{ ORA_TIME_BETWEEN_XQUEUE_PULLS }}"
TIME_BETWEEN_EXPIRED_CHECKS: "{{ ORA_TIME_BETWEEN_EXPIRED_CHECKS }}"
GRADER_SETTINGS_DIRECTORY: "{{ ORA_GRADER_SETTINGS_DIRECTORY }}"
MAX_NUMBER_OF_TIMES_TO_RETRY_GRADING: "{{ ORA_MAX_NUMBER_OF_TIMES_TO_RETRY_GRADING }}"
MIN_TO_USE_ML: "{{ ORA_MIN_TO_USE_ML }}"
ML_PATH: "{{ ORA_ML_PATH }}"
ML_MODEL_PATH: "{{ ORA_ML_MODEL_PATH }}"
TIME_BETWEEN_ML_CREATOR_CHECKS: "{{ ORA_TIME_BETWEEN_ML_CREATOR_CHECKS }}"
TIME_BETWEEN_ML_GRADER_CHECKS: "{{ ORA_TIME_BETWEEN_ML_GRADER_CHECKS }}"
MIN_TO_USE_PEER: "{{ ORA_MIN_TO_USE_PEER }}"
PEER_GRADER_COUNT: "{{ ORA_PEER_GRADER_COUNT }}"
PEER_GRADER_MINIMUM_TO_CALIBRATE: "{{ ORA_PEER_GRADER_MINIMUM_TO_CALIBRATE }}"
PEER_GRADER_MAXIMUM_TO_CALIBRATE: "{{ ORA_PEER_GRADER_MAXIMUM_TO_CALIBRATE }}"
PEER_GRADER_MIN_NORMALIZED_CALIBRATION_ERROR: "{{ ORA_PEER_GRADER_MIN_NORMALIZED_CALIBRATION_ERROR }}"
EXPIRE_SUBMISSIONS_AFTER: "{{ ORA_EXPIRE_SUBMISSIONS_AFTER }}"
RESET_SUBMISSIONS_AFTER: "{{ ORA_RESET_SUBMISSIONS_AFTER }}"
LOCAL_LOGLEVEL: "{{ ORA_LOCAL_LOGLEVEL }}"
DEBUG: "{{ ORA_DEBUG }}"
SYSLOG_SERVER: ORA_SYSLOG_SERVER
USE_S3_TO_STORE_MODELS: ORA_USE_S3_TO_STORE_MODELS
S3_BUCKETNAME: "{{ ORA_S3_BUCKETNAME }}"
ora_auth_config:
USERS: "{{ ORA_USERS }}"
XQUEUE_INTERFACE:
django_auth:
username: "{{ ORA_XQUEUE_DJANGO_USER }}"
password: "{{ ORA_XQUEUE_DJANGO_PASSWORD }}"
basic_auth: [ "{{ ORA_XQUEUE_BASIC_AUTH_USER }}", "{{ORA_XQUEUE_BASIC_AUTH_PASSWORD}}" ]
url: "{{ ORA_XQUEUE_URL }}"
GRADING_CONTROLLER_INTERFACE:
django_auth:
password: "{{ ORA_DJANGO_PASSWORD }}"
username: "{{ ORA_DJANGO_USER }}"
url: "{{ ORA_URL }}"
DATABASES:
default:
ENGINE: 'django.db.backends.mysql'
NAME: "{{ ORA_MYSQL_DB_NAME }}"
USER: "{{ ORA_MYSQL_USER }}"
PASSWORD: "{{ ORA_MYSQL_PASSWORD }}"
HOST: "{{ ORA_MYSQL_HOST }}"
PORT: "{{ ORA_MYSQL_PORT }}"
AWS_ACCESS_KEY_ID: "{{ ORA_AWS_ACCESS_KEY_ID }}"
AWS_SECRET_ACCESS_KEY: "{{ ORA_AWS_SECRET_ACCESS_KEY }}"
ora_environment:
SERVICE_VARIANT: ora
LANG: "{{ ORA_LANG }}"
PATH: "{{ ora_deploy_path }}"
ora_debian_pkgs:
- python-software-properties
- pkg-config
- curl
- git
- python-virtualenv
- build-essential
- python-dev
- gfortran
- libfreetype6-dev
- libpng12-dev
- libxml2-dev
- libxslt1-dev
- yui-compressor
- graphviz
- graphviz-dev
- libmysqlclient-dev
- libreadline6
- libreadline6-dev
- super
- aspell
- libblas3gf
- libblas-dev
- liblapack3gf
- liblapack-dev
- libatlas-base-dev
- redis-server
ora_ease_debian_pkgs:
- python-pip
- gcc
- g++
- gfortran
- libblas3gf
- libblas-dev
- liblapack3gf
- liblapack-dev
- libatlas-base-dev
- libxml2-dev
- libxslt1-dev
- aspell
- python
---
- name: restart ora
supervisorctl: >
name=ora
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=restarted
when: ora_installed is defined and not disable_edx_services
- name: restart ora_celery
supervisorctl: >
name=ora_celery
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=restarted
when: ora_installed is defined and not disable_edx_services
---
dependencies:
- supervisor
- nltk
- name: create supervisor scripts - ora, ora_celery
template: >
src={{ item }}.conf.j2 dest={{ supervisor_available_dir }}/{{ item }}.conf
owner={{ supervisor_user }} group={{ common_web_user }} mode=0644
with_items: ['ora', 'ora_celery']
- name: enable supervisor scripts - ora, ora_celery
file: >
src={{ supervisor_available_dir }}/{{ item }}.conf
dest={{ supervisor_cfg_dir }}/{{ item }}.conf
state=link
force=yes
owner={{ supervisor_user }}
group={{ common_web_user }}
mode=0644
notify:
- restart ora
- restart ora_celery
with_items: ['ora', 'ora_celery']
when: not disable_edx_services
- name: "add gunicorn configuration file"
template: >
src=ora_gunicorn.py.j2 dest={{ ora_app_dir }}/ora_gunicorn.py
sudo_user: "{{ ora_user }}"
notify:
- restart ora
- include: ease.yml
- name: create ora application config
template: src=ora.env.json.j2 dest={{ ora_app_dir }}/ora.env.json
sudo_user: "{{ ora_user }}"
- name: create ora auth file
template: src=ora.auth.json.j2 dest={{ ora_app_dir }}/ora.auth.json
sudo_user: "{{ ora_user }}"
- name: setup the ora env
notify:
- "restart ora"
- "restart ora_celery"
template: >
src=ora_env.j2 dest={{ ora_app_dir }}/ora_env
owner={{ ora_user }} group={{ common_web_user }}
mode=0644
# Do A Checkout
- name: git checkout ora repo into {{ ora_app_dir }}
git: >
dest={{ ora_code_dir }} repo={{ ora_source_repo }} version={{ ora_version }}
accept_hostkey=yes
sudo_user: "{{ ora_user }}"
notify:
- restart ora
- restart ora_celery
# TODO: Check git.py _run_if_changed() to see if the logic there to skip running certain
# portions of the deploy needs to be incorporated here.
# Install the python pre requirements into {{ ora_venv_dir }}
- name: install python pre-requirements
pip: >
requirements="{{ ora_pre_requirements_file }}" virtualenv="{{ ora_venv_dir }}" state=present
extra_args="-i {{ COMMON_PYPI_MIRROR_URL }}"
sudo_user: "{{ ora_user }}"
notify:
- restart ora
- restart ora_celery
# Install the python post requirements into {{ ora_venv_dir }}
- name: install python post-requirements
pip: >
requirements="{{ ora_post_requirements_file }}" virtualenv="{{ ora_venv_dir }}" state=present
extra_args="-i {{ COMMON_PYPI_MIRROR_URL }}"
sudo_user: "{{ ora_user }}"
notify:
- restart ora
- restart ora_celery
#Needed if using redis to prevent memory issues
- name: change memory commit settings -- needed for redis
command: sysctl vm.overcommit_memory=1
notify:
- restart ora
- restart ora_celery
- name: syncdb and migrate
shell: SERVICE_VARIANT=ora {{ ora_venv_dir }}/bin/django-admin.py syncdb --migrate --noinput --settings=edx_ora.aws --pythonpath={{ ora_code_dir }}
when: migrate_db is defined and migrate_db|lower == "yes"
sudo_user: "{{ ora_user }}"
notify:
- restart ora
- restart ora_celery
- name: create users
shell: SERVICE_VARIANT=ora {{ ora_venv_dir }}/bin/django-admin.py update_users --settings=edx_ora.aws --pythonpath={{ ora_code_dir }}
sudo_user: "{{ ora_user }}"
notify:
- restart ora
- restart ora_celery
# call supervisorctl update. this reloads
# the supervisorctl config and restarts
# the services if any of the configurations
# have changed.
#
- name: update supervisor configuration
shell: "{{ supervisor_ctl }} -c {{ supervisor_cfg }} update"
register: supervisor_update
when: not disable_edx_services
changed_when: supervisor_update.stdout is defined and supervisor_update.stdout != ""
- name: ensure ora is started
supervisorctl: >
name=ora
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=started
when: not disable_edx_services
- name: ensure ora_celery is started
supervisorctl: >
name=ora_celery
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=started
when: not disable_edx_services
- name: create a symlink for venv python
file: >
src="{{ ora_venv_bin }}/{{ item }}"
dest={{ COMMON_BIN_DIR }}/{{ item }}.ora
state=link
with_items:
- python
- pip
- set_fact: ora_installed=true
# Do A Checkout
- name: git checkout ease repo into its base dir
git: >
dest={{ ora_ease_code_dir }} repo={{ ora_ease_source_repo }} version={{ora_ease_version}}
accept_hostkey=yes
sudo_user: "{{ ora_user }}"
notify:
- restart ora
- restart ora_celery
- name: install ease system packages
apt: pkg={{ item }} state=present
with_items: ora_ease_debian_pkgs
notify:
- restart ora
- restart ora_celery
# Install the python pre requirements into {{ ora_ease_venv_dir }}
- name: install ease python pre-requirements
pip: >
requirements="{{ ora_ease_pre_requirements_file }}" virtualenv="{{ ora_ease_venv_dir }}" state=present
extra_args="-i {{ COMMON_PYPI_MIRROR_URL }}"
sudo_user: "{{ ora_user }}"
notify:
- restart ora
- restart ora_celery
# Install the python post requirements into {{ ora_ease_venv_dir }}
- name: install ease python post-requirements
pip: >
requirements="{{ ora_ease_post_requirements_file }}" virtualenv="{{ ora_ease_venv_dir }}" state=present
extra_args="-i {{ COMMON_PYPI_MIRROR_URL }}"
sudo_user: "{{ ora_user }}"
notify:
- restart ora
- restart ora_celery
- name: install ease python package
shell: >
. {{ ora_ease_venv_dir }}/bin/activate; cd {{ ora_ease_code_dir }}; python setup.py install
sudo_user: "{{ ora_user }}"
notify:
- restart ora
- restart ora_celery
[program:ora]
command={{ ora_venv_bin }}/gunicorn -c {{ ora_app_dir }}/ora_gunicorn.py {{ ORA_GUNICORN_EXTRA }} edx_ora.wsgi
user={{ common_web_user }}
directory={{ ora_code_dir }}
environment=PID=/var/run/gunicorn/edx-ora.pid,WORKERS={{ ora_gunicorn_workers }},PORT={{ ora_gunicorn_port }},ADDRESS={{ ora_gunicorn_host }},LANG={{ ORA_LANG }},DJANGO_SETTINGS_MODULE=edx_ora.aws,SERVICE_VARIANT=ora
stdout_logfile={{ supervisor_log_dir }}/%(program_name)s-stdout.log
stderr_logfile={{ supervisor_log_dir }}/%(program_name)s-stderr.log
killasgroup=true
stopasgroup=true
[program:ora_celery]
command={{ ora_venv_bin }}/python {{ ora_code_dir }}/manage.py celeryd --loglevel=info --settings=edx_ora.aws --pythonpath={{ ora_code_dir }} -B --autoscale=4,1 --schedule={{ ora_data_dir }}/celerybeat-schedule
user={{ common_web_user }}
directory={{ ora_code_dir }}
environment=DJANGO_SETTINGS_MODULE=edx_ora.aws,SERVICE_VARIANT=ora
stdout_logfile={{ supervisor_log_dir }}/%(program_name)s-stdout.log
stderr_logfile={{ supervisor_log_dir }}/%(program_name)s-stderr.log
killasgroup=true
stopasgroup=true
# {{ ansible_managed }}
{% for name,value in ora_environment.items() %}
{%- if value %}
export {{ name }}="{{ value }}"
{% endif %}
{% endfor %}
"""
gunicorn configuration file: http://docs.gunicorn.org/en/develop/configure.html
{{ ansible_managed }}
"""
preload_app = True
timeout = 90
bind = "{{ ora_gunicorn_host }}:{{ ora_gunicorn_port }}"
pythonpath = "{{ ora_code_dir }}"
workers = {{ ora_gunicorn_workers }}
{{ common_close_all_caches }}
def post_fork(server, worker):
close_all_caches()
{{ ORA_GUNICORN_EXTRA_CONF }}
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