Commit a4840464 by e0d

toward working version 1

parent b2dbe243
...@@ -8,42 +8,72 @@ ...@@ -8,42 +8,72 @@
# license: https://github.com/edx/configuration/blob/master/LICENSE.TXT # 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. # 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 # OS packages
# #
ax_debian_pkgs: as_debian_pkgs:
- mongodb-clients - mongodb-clients
- zip - zip
- libmysqlclient-dev - libmysqlclient-dev
ax_redhat_pkgs: [] as_redhat_pkgs: []
ax_pip_pkgs: as_pip_pkgs:
- git+https://github.com/s3tools/s3cmd.git#egg=s3cmd - 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 @@ ...@@ -9,14 +9,14 @@
# #
# #
# #
# Handlers for role analytics-experiments # Handlers for role analytics-server
# #
# Overview: # Overview:
# #
# #
- name: analytics-experiments | stop the analytics service - name: analytics-server | stop the analytics service
service: name=analytics state=stopped service: name=analytics state=stopped
- name: analytics-experiments | restart the analytics service - name: analytics-server | restart the analytics service
service: name=analytics state=started 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 # TODO: Needed while this repo is private
# #
- name: analytics-experiments | upload ssh script - name: analytics-server | upload ssh script
copy: copy:
src=git_ssh.sh dest=/tmp/git_ssh.sh src=git_ssh.sh dest=/tmp/git_ssh.sh
force=yes owner=root group=adm mode=750 force=yes owner=root group=adm mode=750
tags: tags:
- analytics-experiments - analytics-server
- deploy - deploy
- install - install
- update - update
...@@ -14,25 +14,25 @@ ...@@ -14,25 +14,25 @@
# #
# TODO: Needed while this repo is private # 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: 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 force=yes owner=ubuntu group=adm mode=60
tags: tags:
- analytics-experiments - analytics-server
- deploy - deploy
- install - install
- update - update
- name: analytics-experiments | checkout code - name: analytics-server | checkout code
git: git:
dest={{ ax_code_dir }} repo={{ ax_source_repo }} dest={{ as_code_dir }} repo={{ as_source_repo }}
version={{ ax_version }} version={{ as_version }} force=true
environment: environment:
GIT_SSH: /tmp/git_ssh.sh GIT_SSH: /tmp/git_ssh.sh
notify: analytics-experiments | restart the analytics service notify: analytics-server | restart the analytics service
tags: tags:
- analytics-experiments - analytics-server
- deploy - deploy
- install - install
- update - update
...@@ -40,12 +40,12 @@ ...@@ -40,12 +40,12 @@
# #
# TODO: Needed while this repo is private # TODO: Needed while this repo is private
# #
- name: analytics-experiments | update src permissions - name: analytics-server | update src permissions
file: file:
path={{ ax_code_dir }} state=directory owner={{ ax_user }} path={{ as_code_dir }} state=directory owner={{ as_user }}
group={{ ax_web_user }} mode=2750 recurse=yes group={{ as_web_user }} mode=2750 recurse=yes
tags: tags:
- analytics-experiments - analytics-server
- deploy - deploy
- install - install
- update - update
...@@ -53,10 +53,10 @@ ...@@ -53,10 +53,10 @@
# #
# TODO: Needed while this repo is private # 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 file: path=/etc/git-identity state=absent
tags: tags:
- analytics-experiments - analytics-server
- deploy - deploy
- install - install
- update - update
...@@ -64,35 +64,35 @@ ...@@ -64,35 +64,35 @@
# #
# TODO: Needed while this repo is private # 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 file: path=/tmp/git_ssh.sh state=absent
tags: tags:
- analytics-experiments - analytics-server
- deploy - deploy
- install - install
- update - update
- name: analytics-experiments | install application requirements - name: analytics-server | install application requirements
pip: pip:
requirements={{ ax_requirements_file }} requirements={{ as_requirements_file }}
virtualenv={{ ax_venv_dir }} state=present virtualenv={{ as_venv_dir }} state=present
sudo: true sudo: true
sudo_user: "{{ ax_user }}" sudo_user: "{{ as_user }}"
tags: tags:
- analytics-experiments - analytics-server
- deploy - deploy
- install - install
- update - update
#- name: analytics-experiments | syncdb #- name: analytics-server | syncdb
# shell: > # 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: true
# sudo_user: "{{ ax_user }}" # sudo_user: "{{ as_user }}"
# notify: # notify:
# - analytics-experiments | restart analytics-experiments # - analytics-server | restart analytics-server
# tags: # tags:
# - analytics-experiments # - analytics-server
# - deploy # - deploy
# - install # - install
# - update # - update
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
# #
# #
# #
# Tasks for role analytics-experiments # Tasks for role analytics-server
# #
# Overview: # Overview:
# #
...@@ -22,88 +22,88 @@ ...@@ -22,88 +22,88 @@
# #
# #
- name: analytics-experiments | install system packages - name: analytics-server | install system packages
apt: pkg={{','.join(ax_debian_pkgs)}} state=present apt: pkg={{','.join(as_debian_pkgs)}} state=present
tags: tags:
- analytics-experiments - analytics-server
- install - install
- update - update
- name: analytics-experiments | create analytics-experiments user {{ ax_user }} - name: analytics-server | create analytics-server user {{ as_user }}
user: user:
name={{ ax_user }} state=present shell=/bin/bash name={{ as_user }} state=present shell=/bin/bash
home={{ ax_home }} createhome=yes home={{ as_home }} createhome=yes
tags: tags:
- analytics-experiments - analytics-server
- install - install
- update - update
- name: analytics-experiments | setup the analytics-experiments env - name: analytics-server | setup the analytics-server env
template: template:
src=opt/wwc/analytics-experiments/{{ ax_env }}.j2 src=opt/wwc/analytics-server/{{ as_env }}.j2
dest={{ ax_home }}/{{ ax_env }} dest={{ as_home }}/{{ as_env }}
owner="{{ ax_user }}" group="{{ ax_user }}" owner="{{ as_user }}" group="{{ as_user }}"
tags: tags:
- analytics-experiments - analytics-server
- install - install
- update - update
- name: analytics-experiments | drop a bash_profile - name: analytics-server | drop a bash_profile
copy: > copy: >
src=../../common/files/bash_profile src=../../common/files/bash_profile
dest={{ ax_home }}/.bash_profile dest={{ as_home }}/.bash_profile
owner={{ ax_user }} owner={{ as_user }}
group={{ ax_user }} group={{ as_user }}
- name: analytics-experiments | ensure .bashrc exists - name: analytics-server | ensure .bashrc exists
shell: touch {{ ax_home }}/.bashrc shell: touch {{ as_home }}/.bashrc
sudo: true sudo: true
sudo_user: "{{ ax_user }}" sudo_user: "{{ as_user }}"
tags: tags:
- analytics-experiments - analytics-server
- install - install
- update - update
- name: analytics-experiments | add source of analytics-experiments_env to .bashrc - name: analytics-server | add source of analytics-server_env to .bashrc
lineinfile: lineinfile:
dest={{ ax_home }}/.bashrc dest={{ as_home }}/.bashrc
regexp='. {{ ax_home }}/analytics-experiments_env' regexp='. {{ as_home }}/analytics-server_env'
line='. {{ ax_home }}/analytics_experiments_env' line='. {{ as_home }}/analytics_server_env'
tags: tags:
- analytics-experiments - analytics-server
- install - install
- update - update
- name: analytics-experiments | add source venv to .bashrc - name: analytics-server | add source venv to .bashrc
lineinfile: lineinfile:
dest={{ ax_home }}/.bashrc dest={{ as_home }}/.bashrc
regexp='. {{ ax_venv_dir }}/bin/activate' regexp='. {{ as_venv_dir }}/bin/activate'
line='. {{ ax_venv_dir }}/bin/activate' line='. {{ as_venv_dir }}/bin/activate'
tags: tags:
- analytics-experiments - analytics-server
- install - install
- update - update
- name: analytics-experiments | install global python requirements - name: analytics-server | install global python requirements
pip: name={{ item }} pip: name={{ item }}
with_items: ax_pip_pkgs with_items: as_pip_pkgs
tags: tags:
- analytics-experiments - analytics-server
- install - install
- update - update
- name: analytics-experiments | create config - name: analytics-server | create config
template: template:
src=opt/wwc/analytics.auth.json.j2 src=opt/wwc/analytics.auth.json.j2
dest=/opt/wwc/analytics.auth.json dest=/opt/wwc/analytics.auth.json
owner="{{ ax_web_user }}" group="{{ ax_web_user }}" owner="{{ as_web_user }}" group="{{ as_web_user }}"
tags: tags:
- analytics-experiments - analytics-server
- install - install
- update - update
- name: analtyics-experiments | install service - name: analytics-server | install service
template: template:
src=etc/init/analytics.conf.j2 dest=/etc/init/analytics.conf src=etc/init/analytics.conf.j2 dest=/etc/init/analytics.conf
owner=root group=root 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" description "Analytics server under gunicorn"
...@@ -8,14 +8,14 @@ stop on runlevel [!2345] ...@@ -8,14 +8,14 @@ stop on runlevel [!2345]
respawn respawn
respawn limit 3 30 respawn limit 3 30
env SERVICE_VARIANT={{ ax_service_variant }} env SERVICE_VARIANT={{ as_service_variant }}
env PID=/var/tmp/analytics.pid env PID=/var/tmp/analytics.pid
env WORKERS={{ ax_workers }} env WORKERS={{ as_workers }}
env PORT={{ ax_server_port }} env PORT={{ as_server_port }}
env LANG={{ ax_env_lang }} env LANG={{ as_env_lang }}
env DJANGO_SETTINGS_MODULE={{ ax_django_settings }} env DJANGO_SETTINGS_MODULE={{ as_django_settings }}
chdir {{ ax_code_dir }} chdir {{ as_code_dir }}
setuid {{ ax_web_user }} 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 }} # {{ ansible_managed }}
{% for name,value in ax_env_vars.items() %} {% for name,value in as_env_vars.items() %}
{% if value %} {% if value %}
export {{ name }}="{{ value }}" export {{ name }}="{{ value }}"
{% endif %} {% 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