Commit a4840464 by e0d

toward working version 1

parent b2dbe243
......@@ -8,42 +8,72 @@
# license: https://github.com/edx/configuration/blob/master/LICENSE.TXT
#
#
# Vars for role analytics-experiments
# Vars for role analytics-server
# vars are namespace with the module name.
#
ax_role_name: "analytics-experiments"
ax_user: "analytics-experiments"
ax_home: "/opt/wwc/analytics-experiments"
ax_venv_dir: "{{ ax_home }}/virtualenvs/analytics-experiments"
ax_source_repo: "git@github.com:edx/analytics-server.git"
ax_code_dir: "{{ ax_home }}/src"
ax_version: "master"
ax_git_identity_path: "{{ secure_dir }}/files/git-identity"
ax_requirements_file: "{{ ax_code_dir }}/requirements.txt"
ax_log_level: "INFO"
ax_rsyslog_enabled: "yes"
ax_web_user: "www-data"
ax_env: "analytics-experiments_env"
ax_service_variant: 'analytics'
ax_workers: '4'
ax_server_port: '9000'
ax_env_lang: 'en_US.UTF-8'
ax_django_settings: 'anserv.settings'
ax_env_vars:
ANALYTICS_EXPERIMENTS_LOG_LEVEL: "{{ ax_log_level }}"
AS_DB_ANALYTICS_PASSWORD: ''
AS_DB_ANALYTICS_USER: ''
AS_DB_ANALYTICS_HOST: ''
DATABASES:
default: &databases_default
ENGINE: 'django.db.backends.mysql'
NAME: 'wwc'
USER: 'edxapp001'
PASSWORD: 'CHANGEME'
HOST: 'CHANGEME'
PORT: 3306
analytics_auth_config:
DATABASES:
analytics:
<<: *databases_default
USER: $AS_DB_ANALYTICS_USER
PASSWORD: $AS_DB_ANALYTICS_PASSWORD
HOST: $AS_DB_ANALYTICS_HOST
ANALYTICS_API_KEY: $AS_API_KEY
ANALYTICS_RESULTS_DB:
MONGO_URI: $AS_DB_RESULTS_URL
MONGO_DB: $AS_DB_RESULTS_DB
MONGO_STORED_QUERIES_COLLECTION: $AS_DB_RESULTS_COLLECTION
as_role_name: "analytics-server"
as_user: "analytics-server"
as_home: "/opt/wwc/analytics-server"
as_venv_dir: "{{ as_home }}/virtualenvs/analytics-server"
as_source_repo: "git@github.com:edx/analytics-server.git"
as_code_dir: "{{ as_home }}/src"
as_version: "master"
as_git_identity_path: "{{ secure_dir }}/files/git-identity"
as_requirements_file: "{{ as_code_dir }}/requirements.txt"
as_log_level: "INFO"
as_rsyslog_enabled: "yes"
as_web_user: "www-data"
as_env: "analytics-server_env"
as_service_variant: 'analytics'
as_workers: '4'
as_server_port: '9000'
as_env_lang: 'en_US.UTF-8'
as_django_settings: 'anserv.settings'
as_env_vars:
ANALYTICS_SERVER_LOG_LEVEL: "{{ as_log_level }}"
as_automated_rbash_links:
- /usr/bin/sudo
- /usr/bin/scp
#
# OS packages
#
ax_debian_pkgs:
as_debian_pkgs:
- mongodb-clients
- zip
- libmysqlclient-dev
ax_redhat_pkgs: []
as_redhat_pkgs: []
ax_pip_pkgs:
as_pip_pkgs:
- git+https://github.com/s3tools/s3cmd.git#egg=s3cmd
\ No newline at end of file
automator ALL=(www-data) NOPASSWD:SETENV:/opt/edx/bin/django-admin.py help *
automator ALL=(www-data) NOPASSWD:SETENV:/opt/edx/bin/django-admin.py get_grades *
automator ALL=(www-data) NOPASSWD:SETENV:/opt/edx/bin/django-admin.py run_all_queries *
......@@ -9,14 +9,14 @@
#
#
#
# Handlers for role analytics-experiments
# Handlers for role analytics-server
#
# Overview:
#
#
- name: analytics-experiments | stop the analytics service
- name: analytics-server | stop the analytics service
service: name=analytics state=stopped
- name: analytics-experiments | restart the analytics service
- name: analytics-server | restart the analytics service
service: name=analytics state=started
---
dependencies:
- {
role: automated,
automated_rbash_links: $as_automated_rbash_links,
automated_sudoers_file: 'roles/analytics-server/files/etc/sudoers.d/99-automator-analytics-server'
}
\ No newline at end of file
#
# TODO: Needed while this repo is private
#
- name: analytics-experiments | upload ssh script
- name: analytics-server | upload ssh script
copy:
src=git_ssh.sh dest=/tmp/git_ssh.sh
force=yes owner=root group=adm mode=750
tags:
- analytics-experiments
- analytics-server
- deploy
- install
- update
......@@ -14,25 +14,25 @@
#
# TODO: Needed while this repo is private
#
- name: analytics-experiments | install read-only ssh key required for checkout
- name: analytics-server | install read-only ssh key required for checkout
copy:
src={{ ax_git_identity_path }} dest=/etc/git-identity
src={{ as_git_identity_path }} dest=/etc/git-identity
force=yes owner=ubuntu group=adm mode=60
tags:
- analytics-experiments
- analytics-server
- deploy
- install
- update
- name: analytics-experiments | checkout code
- name: analytics-server | checkout code
git:
dest={{ ax_code_dir }} repo={{ ax_source_repo }}
version={{ ax_version }}
dest={{ as_code_dir }} repo={{ as_source_repo }}
version={{ as_version }} force=true
environment:
GIT_SSH: /tmp/git_ssh.sh
notify: analytics-experiments | restart the analytics service
notify: analytics-server | restart the analytics service
tags:
- analytics-experiments
- analytics-server
- deploy
- install
- update
......@@ -40,12 +40,12 @@
#
# TODO: Needed while this repo is private
#
- name: analytics-experiments | update src permissions
- name: analytics-server | update src permissions
file:
path={{ ax_code_dir }} state=directory owner={{ ax_user }}
group={{ ax_web_user }} mode=2750 recurse=yes
path={{ as_code_dir }} state=directory owner={{ as_user }}
group={{ as_web_user }} mode=2750 recurse=yes
tags:
- analytics-experiments
- analytics-server
- deploy
- install
- update
......@@ -53,10 +53,10 @@
#
# TODO: Needed while this repo is private
#
- name: analytics-experiments | remove read-only ssh key for the content repo
- name: analytics-server | remove read-only ssh key for the content repo
file: path=/etc/git-identity state=absent
tags:
- analytics-experiments
- analytics-server
- deploy
- install
- update
......@@ -64,35 +64,35 @@
#
# TODO: Needed while this repo is private
#
- name: analytics-experiments | remove ssh script
- name: analytics-server | remove ssh script
file: path=/tmp/git_ssh.sh state=absent
tags:
- analytics-experiments
- analytics-server
- deploy
- install
- update
- name: analytics-experiments | install application requirements
- name: analytics-server | install application requirements
pip:
requirements={{ ax_requirements_file }}
virtualenv={{ ax_venv_dir }} state=present
requirements={{ as_requirements_file }}
virtualenv={{ as_venv_dir }} state=present
sudo: true
sudo_user: "{{ ax_user }}"
sudo_user: "{{ as_user }}"
tags:
- analytics-experiments
- analytics-server
- deploy
- install
- update
#- name: analytics-experiments | syncdb
#- name: analytics-server | syncdb
# shell: >
# cd {{ ax_code_dir }} && {{ ax_venv_dir }}/bin/python manage.py syncdb
# cd {{ as_code_dir }} && {{ as_venv_dir }}/bin/python manage.py syncdb
# sudo: true
# sudo_user: "{{ ax_user }}"
# sudo_user: "{{ as_user }}"
# notify:
# - analytics-experiments | restart analytics-experiments
# - analytics-server | restart analytics-server
# tags:
# - analytics-experiments
# - analytics-server
# - deploy
# - install
# - update
......@@ -10,7 +10,7 @@
#
#
#
# Tasks for role analytics-experiments
# Tasks for role analytics-server
#
# Overview:
#
......@@ -22,88 +22,88 @@
#
#
- name: analytics-experiments | install system packages
apt: pkg={{','.join(ax_debian_pkgs)}} state=present
- name: analytics-server | install system packages
apt: pkg={{','.join(as_debian_pkgs)}} state=present
tags:
- analytics-experiments
- analytics-server
- install
- update
- name: analytics-experiments | create analytics-experiments user {{ ax_user }}
- name: analytics-server | create analytics-server user {{ as_user }}
user:
name={{ ax_user }} state=present shell=/bin/bash
home={{ ax_home }} createhome=yes
name={{ as_user }} state=present shell=/bin/bash
home={{ as_home }} createhome=yes
tags:
- analytics-experiments
- analytics-server
- install
- update
- name: analytics-experiments | setup the analytics-experiments env
- name: analytics-server | setup the analytics-server env
template:
src=opt/wwc/analytics-experiments/{{ ax_env }}.j2
dest={{ ax_home }}/{{ ax_env }}
owner="{{ ax_user }}" group="{{ ax_user }}"
src=opt/wwc/analytics-server/{{ as_env }}.j2
dest={{ as_home }}/{{ as_env }}
owner="{{ as_user }}" group="{{ as_user }}"
tags:
- analytics-experiments
- analytics-server
- install
- update
- name: analytics-experiments | drop a bash_profile
- name: analytics-server | drop a bash_profile
copy: >
src=../../common/files/bash_profile
dest={{ ax_home }}/.bash_profile
owner={{ ax_user }}
group={{ ax_user }}
dest={{ as_home }}/.bash_profile
owner={{ as_user }}
group={{ as_user }}
- name: analytics-experiments | ensure .bashrc exists
shell: touch {{ ax_home }}/.bashrc
- name: analytics-server | ensure .bashrc exists
shell: touch {{ as_home }}/.bashrc
sudo: true
sudo_user: "{{ ax_user }}"
sudo_user: "{{ as_user }}"
tags:
- analytics-experiments
- analytics-server
- install
- update
- name: analytics-experiments | add source of analytics-experiments_env to .bashrc
- name: analytics-server | add source of analytics-server_env to .bashrc
lineinfile:
dest={{ ax_home }}/.bashrc
regexp='. {{ ax_home }}/analytics-experiments_env'
line='. {{ ax_home }}/analytics_experiments_env'
dest={{ as_home }}/.bashrc
regexp='. {{ as_home }}/analytics-server_env'
line='. {{ as_home }}/analytics_server_env'
tags:
- analytics-experiments
- analytics-server
- install
- update
- name: analytics-experiments | add source venv to .bashrc
- name: analytics-server | add source venv to .bashrc
lineinfile:
dest={{ ax_home }}/.bashrc
regexp='. {{ ax_venv_dir }}/bin/activate'
line='. {{ ax_venv_dir }}/bin/activate'
dest={{ as_home }}/.bashrc
regexp='. {{ as_venv_dir }}/bin/activate'
line='. {{ as_venv_dir }}/bin/activate'
tags:
- analytics-experiments
- analytics-server
- install
- update
- name: analytics-experiments | install global python requirements
- name: analytics-server | install global python requirements
pip: name={{ item }}
with_items: ax_pip_pkgs
with_items: as_pip_pkgs
tags:
- analytics-experiments
- analytics-server
- install
- update
- name: analytics-experiments | create config
- name: analytics-server | create config
template:
src=opt/wwc/analytics.auth.json.j2
dest=/opt/wwc/analytics.auth.json
owner="{{ ax_web_user }}" group="{{ ax_web_user }}"
owner="{{ as_web_user }}" group="{{ as_web_user }}"
tags:
- analytics-experiments
- analytics-server
- install
- update
- name: analtyics-experiments | install service
- name: analytics-server | install service
template:
src=etc/init/analytics.conf.j2 dest=/etc/init/analytics.conf
owner=root group=root
......
# gunicorn
description "Analytics server under gunicorn"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
respawn limit 3 30
env SERVICE_VARIANT={{ ax_service_variant }}
env PID=/var/tmp/analytics.pid
env WORKERS={{ ax_workers }}
env PORT={{ ax_server_port }}
env LANG={{ ax_env_lang }}
env DJANGO_SETTINGS_MODULE={{ ax_django_settings }}
chdir {{ ax_code_dir }}
setuid {{ ax_web_user }}
exec {{ ax_venv_dir }}/bin/gunicorn -b 0.0.0.0:$PORT -w $WORKERS --pythonpath={{ ax_code_dir }}/anserv anserv.wsgi
# gunicorn
# {{ ansible_managed }}
description "Analytics server under gunicorn"
......@@ -8,14 +8,14 @@ stop on runlevel [!2345]
respawn
respawn limit 3 30
env SERVICE_VARIANT={{ ax_service_variant }}
env SERVICE_VARIANT={{ as_service_variant }}
env PID=/var/tmp/analytics.pid
env WORKERS={{ ax_workers }}
env PORT={{ ax_server_port }}
env LANG={{ ax_env_lang }}
env DJANGO_SETTINGS_MODULE={{ ax_django_settings }}
env WORKERS={{ as_workers }}
env PORT={{ as_server_port }}
env LANG={{ as_env_lang }}
env DJANGO_SETTINGS_MODULE={{ as_django_settings }}
chdir {{ ax_code_dir }}
setuid {{ ax_web_user }}
chdir {{ as_code_dir }}
setuid {{ as_web_user }}
exec {{ ax_venv_dir }}/bin/gunicorn -b 0.0.0.0:$PORT -w $WORKERS --pythonpath={{ ax_code_dir }}/anserv anserv.wsgi
exec {{ as_venv_dir }}/bin/gunicorn -b 0.0.0.0:$PORT -w $WORKERS --pythonpath={{ as_code_dir }}/anserv anserv.wsgi
# {{ ansible_managed }}
{% for name,value in ax_env_vars.items() %}
{% for name,value in as_env_vars.items() %}
{% if value %}
export {{ name }}="{{ value }}"
{% endif %}
......
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