Commit f392ed66 by John Jarvis

Merge pull request #435 from edx/jarv/supervisor-vagrant-updates

creates supervisor config in main.yml and calls update to restart
parents d9227fc4 da4c7c18
...@@ -184,6 +184,11 @@ def main(): ...@@ -184,6 +184,11 @@ def main():
if '%s: started' % name in out: if '%s: started' % name in out:
module.exit_json(changed=True, name=name, state=state) module.exit_json(changed=True, name=name, state=state)
elif '%s: ERROR (already started)' % name in out:
# addresses a race condition if update is called
# immediately before started and the service is set
# to start automatically
module.exit_json(changed=False, name=name, state=state)
module.fail_json(msg=out) module.fail_json(msg=out)
......
...@@ -10,13 +10,15 @@ ...@@ -10,13 +10,15 @@
# #
# #
# Handlers for role analytics-server # Handlers for role analytics-server
# #
# Overview: # Overview:
# #
# #
- name: analytics-server | stop the analytics service - name: analytics-server | stop the analytics service
service: name=analytics state=stopped service: name=analytics state=stopped
tags: deploy
- name: analytics-server | start the analytics service - name: analytics-server | start the analytics service
service: name=analytics state=started service: name=analytics state=started
tags: deploy
...@@ -10,13 +10,15 @@ ...@@ -10,13 +10,15 @@
# #
# #
# Handlers for role analytics # Handlers for role analytics
# #
# Overview: # Overview:
# #
# #
- name: analytics | stop the analytics service - name: analytics | stop the analytics service
service: name=analytics state=stopped service: name=analytics state=stopped
tags: deploy
- name: analytics | start the analytics service - name: analytics | start the analytics service
service: name=analytics state=started service: name=analytics state=started
tags: deploy
--- ---
- name: apache | restart apache - name: apache | restart apache
service: name=apache2 state=restarted service: name=apache2 state=restarted
tags: deploy
...@@ -14,10 +14,11 @@ ...@@ -14,10 +14,11 @@
# Overview: # Overview:
# #
- name: certs | restart the certs service - name: certs | restart certs
supervisorctl: > supervisorctl: >
name=certs name=certs
supervisorctl_path={{ supervisor_ctl }} supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }} config={{ supervisor_cfg }}
state=restarted state=restarted
tags: deploy
--- ---
- name: certs | stop the certificates service
supervisorctl: >
name="certs"
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=stopped
tags: deploy
- name: certs | create certificate application config - name: certs | create certificate application config
template: > template: >
src=certs.env.json.j2 src=certs.env.json.j2
dest={{ certs_app_dir }}/env.json dest={{ certs_app_dir }}/env.json
sudo_user: "{{ certs_user }}" sudo_user: "{{ certs_user }}"
notify: certs | restart certs
tags: deploy tags: deploy
- name: certs | create certificate auth file - name: certs | create certificate auth file
...@@ -20,25 +13,28 @@ ...@@ -20,25 +13,28 @@
src=certs.auth.json.j2 src=certs.auth.json.j2
dest={{ certs_app_dir }}/auth.json dest={{ certs_app_dir }}/auth.json
sudo_user: "{{ certs_user }}" sudo_user: "{{ certs_user }}"
notify: certs | restart certs
tags: deploy tags: deploy
- name: certs | writing supervisor script for certificates - name: certs | writing supervisor script for certificates
template: > template: >
src=certs.conf.j2 dest={{ supervisor_cfg_dir }}/certs.conf src=certs.conf.j2 dest={{ supervisor_cfg_dir }}/certs.conf
owner={{ supervisor_user }} group={{ common_web_user }} mode=0644 owner={{ supervisor_user }} mode=0644
notify: supervisor | reload supervisor notify: certs | restart certs
tags: deploy tags: deploy
- name: certs | create ssh script for git - name: certs | create ssh script for git
template: > template: >
src={{ certs_git_ssh|basename }}.j2 dest={{ certs_git_ssh }} src={{ certs_git_ssh|basename }}.j2 dest={{ certs_git_ssh }}
owner={{ certs_user }} mode=750 owner={{ certs_user }} mode=750
notify: certs | restart certs
tags: deploy tags: deploy
- name: certs | install read-only ssh key for the certs repo - name: certs | install read-only ssh key for the certs repo
copy: > copy: >
src={{ CERTS_LOCAL_GIT_IDENTITY }} dest={{ certs_git_identity }} src={{ CERTS_LOCAL_GIT_IDENTITY }} dest={{ certs_git_identity }}
force=yes owner={{ certs_user }} mode=0600 force=yes owner={{ certs_user }} mode=0600
notify: certs | restart certs
tags: deploy tags: deploy
- name: certs | checkout certificates repo into {{ certs_code_dir }} - name: certs | checkout certificates repo into {{ certs_code_dir }}
...@@ -46,21 +42,35 @@ ...@@ -46,21 +42,35 @@
sudo_user: "{{ certs_user }}" sudo_user: "{{ certs_user }}"
environment: environment:
GIT_SSH: "{{ certs_git_ssh }}" GIT_SSH: "{{ certs_git_ssh }}"
notify: certs | restart certs
tags: deploy tags: deploy
- name: certs | remove read-only ssh key for the certs repo - name: certs | remove read-only ssh key for the certs repo
file: path={{ certs_git_identity }} state=absent file: path={{ certs_git_identity }} state=absent
notify: certs | restart certs
tags: deploy tags: deploy
- name : install python requirements - name : install python requirements
pip: requirements="{{ certs_requirements_file }}" virtualenv="{{ certs_venv_dir }}" state=present pip: requirements="{{ certs_requirements_file }}" virtualenv="{{ certs_venv_dir }}" state=present
sudo_user: "{{ certs_user }}" sudo_user: "{{ certs_user }}"
notify: certs | restart certs
tags: deploy tags: deploy
- name: certs | restart the certificate service # call supervisorctl update. this reloads
# the supervisorctl config and restarts
# the services if any of the configurations
# have changed.
#
- name: certs | update supervisor configuration
shell: "{{ supervisor_ctl }} -c {{ supervisor_cfg }} update"
register: supervisor_update
sudo_user: "{{ supervisor_service_user }}"
changed_when: supervisor_update.stdout != ""
- name: certs | ensure certs has started
supervisorctl: > supervisorctl: >
name=certs name=certs
supervisorctl_path={{ supervisor_ctl }} supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }} config={{ supervisor_cfg }}
state=restarted state=started
tags: deploy sudo_user: "{{ supervisor_service_user }}"
...@@ -41,6 +41,7 @@ ...@@ -41,6 +41,7 @@
home="{{ certs_app_dir }}" home="{{ certs_app_dir }}"
createhome=no createhome=no
shell=/bin/false shell=/bin/false
notify: certs | restart certs
- name: certs | create certs app and data dirs - name: certs | create certs app and data dirs
file: > file: >
...@@ -48,6 +49,7 @@ ...@@ -48,6 +49,7 @@
state=directory state=directory
owner="{{ certs_user }}" owner="{{ certs_user }}"
group="{{ common_web_group }}" group="{{ common_web_group }}"
notify: certs | restart certs
with_items: with_items:
- "{{ certs_app_dir }}" - "{{ certs_app_dir }}"
- "{{ certs_venvs_dir }}" - "{{ certs_venvs_dir }}"
...@@ -57,12 +59,14 @@ ...@@ -57,12 +59,14 @@
path="{{ certs_gpg_dir }}" state=directory path="{{ certs_gpg_dir }}" state=directory
owner="{{ certs_user }}" group="{{ certs_user }}" owner="{{ certs_user }}" group="{{ certs_user }}"
mode=0700 mode=0700
notify: certs | restart certs
- name: certs | copy the private gpg signing key - name: certs | copy the private gpg signing key
copy: > copy: >
src={{ CERTS_LOCAL_PRIVATE_KEY }} src={{ CERTS_LOCAL_PRIVATE_KEY }}
dest={{ certs_app_dir }}/{{ CERTS_LOCAL_PRIVATE_KEY|basename }} dest={{ certs_app_dir }}/{{ CERTS_LOCAL_PRIVATE_KEY|basename }}
owner={{ certs_user }} mode=0600 owner={{ certs_user }} mode=0600
notify: certs | restart certs
register: certs_gpg_key register: certs_gpg_key
...@@ -71,6 +75,7 @@ ...@@ -71,6 +75,7 @@
/usr/bin/gpg --homedir {{ certs_gpg_dir }} --import {{ certs_app_dir }}/{{ CERTS_LOCAL_PRIVATE_KEY|basename }} /usr/bin/gpg --homedir {{ certs_gpg_dir }} --import {{ certs_app_dir }}/{{ CERTS_LOCAL_PRIVATE_KEY|basename }}
sudo_user: "{{ certs_user }}" sudo_user: "{{ certs_user }}"
when: certs_gpg_key.changed when: certs_gpg_key.changed
notify: certs | restart certs
- include: deploy.yml - include: deploy.yml
...@@ -79,6 +84,7 @@ ...@@ -79,6 +84,7 @@
src="{{ certs_venv_bin }}/{{ item }}" src="{{ certs_venv_bin }}/{{ item }}"
dest={{ COMMON_BIN_DIR }}/{{ item }}.certs dest={{ COMMON_BIN_DIR }}/{{ item }}.certs
state=link state=link
notify: certs | restart certs
with_items: with_items:
- python - python
- pip - pip
...@@ -2,3 +2,4 @@ ...@@ -2,3 +2,4 @@
- name: common | restart rsyslogd - name: common | restart rsyslogd
service: name=rsyslog state=restarted service: name=rsyslog state=restarted
sudo: True sudo: True
tags: deploy
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
group=syslog mode=0755 group=syslog mode=0755
# Need to install python-pycurl to use Ansible's apt_repository module # Need to install python-pycurl to use Ansible's apt_repository module
- name: jenkins_worker | Install python-pycurl - name: common | Install python-pycurl
apt: pkg=python-pycurl state=present update_cache=yes apt: pkg=python-pycurl state=present update_cache=yes
# Ensure that we get a current version of Git # Ensure that we get a current version of Git
......
--- ---
- name: datadog | restart the datadog service - name: datadog | restart the datadog service
service: name=datadog-agent state=restarted service: name=datadog-agent state=restarted
\ No newline at end of file tags: deploy
...@@ -6,7 +6,6 @@ devpi_log_dir: "{{ COMMON_LOG_DIR }}/devpi" ...@@ -6,7 +6,6 @@ devpi_log_dir: "{{ COMMON_LOG_DIR }}/devpi"
devpi_venvs_dir: "{{ devpi_app_dir }}/venvs" devpi_venvs_dir: "{{ devpi_app_dir }}/venvs"
devpi_venv_dir: "{{ devpi_venvs_dir }}/devpi" devpi_venv_dir: "{{ devpi_venvs_dir }}/devpi"
devpi_venv_bin: "{{ devpi_venv_dir }}/bin" devpi_venv_bin: "{{ devpi_venv_dir }}/bin"
devpi_supervisor_ctl: "{{ devpi_venv_bin }}/supervisorctl"
devpi_pip_pkgs: devpi_pip_pkgs:
- devpi-server - devpi-server
- eventlet - eventlet
...@@ -20,7 +19,8 @@ devpi_supervisor_user: devpi.supervisor ...@@ -20,7 +19,8 @@ devpi_supervisor_user: devpi.supervisor
devpi_supervisor_app_dir: "{{ devpi_app_dir }}/supervisor" devpi_supervisor_app_dir: "{{ devpi_app_dir }}/supervisor"
devpi_supervisor_cfg_dir: "{{ devpi_supervisor_app_dir }}/conf.d" devpi_supervisor_cfg_dir: "{{ devpi_supervisor_app_dir }}/conf.d"
devpi_supervisor_data_dir: "{{ devpi_data_dir }}/supervisor" devpi_supervisor_data_dir: "{{ devpi_data_dir }}/supervisor"
devpi_supervisor_cfg: "{{ devpi_supervisor_app_dir }}/supervisor.conf" devpi_supervisor_cfg: "{{ devpi_supervisor_app_dir }}/supervisord.conf"
devpi_supervisor_log_dir: "{{ devpi_log_dir }}/supervisor" devpi_supervisor_log_dir: "{{ devpi_log_dir }}/supervisor"
devpi_supervisor_venv_dir: "{{ devpi_app_dir }}/venvs/supervisor" devpi_supervisor_venv_dir: "{{ devpi_app_dir }}/venvs/supervisor"
devpi_supervisor_venv_bin: "{{ devpi_supervisor_venv_dir }}/bin" devpi_supervisor_venv_bin: "{{ devpi_supervisor_venv_dir }}/bin"
devpi_supervisor_ctl: "{{ devpi_supervisor_venv_bin }}/supervisorctl"
...@@ -18,11 +18,4 @@ ...@@ -18,11 +18,4 @@
config={{ devpi_supervisor_cfg }} config={{ devpi_supervisor_cfg }}
name=devpi-server name=devpi-server
sudo_user: "{{ devpi_supervisor_user }}" sudo_user: "{{ devpi_supervisor_user }}"
tags: deploy
- name: devpi | start devpi
supervisorctl: >
state=started
supervisorctl_path={{ devpi_supervisor_ctl }}
config={{ devpi_supervisor_cfg }}
name=devpi-server
sudo_user: "{{ devpi_supervisor_user }}"
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
user: > user: >
name={{ devpi_user }} name={{ devpi_user }}
shell=/bin/false createhome=no shell=/bin/false createhome=no
notify: devpi | restart devpi
- name: devpi | create devpi application directories - name: devpi | create devpi application directories
file: > file: >
...@@ -41,10 +42,10 @@ ...@@ -41,10 +42,10 @@
state=directory state=directory
owner={{ devpi_user }} owner={{ devpi_user }}
group={{ devpi_supervisor_user }} group={{ devpi_supervisor_user }}
notify: supervisor | restart supervisor
with_items: with_items:
- "{{ devpi_app_dir }}" - "{{ devpi_app_dir }}"
- "{{ devpi_venv_dir }}" - "{{ devpi_venv_dir }}"
notify: devpi | restart devpi
- name: devpi | create the devpi data directory, needs write access by the service user - name: devpi | create the devpi data directory, needs write access by the service user
file: > file: >
...@@ -55,6 +56,7 @@ ...@@ -55,6 +56,7 @@
with_items: with_items:
- "{{ devpi_data_dir }}" - "{{ devpi_data_dir }}"
- "{{ devpi_mirror_dir }}" - "{{ devpi_mirror_dir }}"
notify: devpi | restart devpi
- name: devpi | install devpi pip pkgs - name: devpi | install devpi pip pkgs
pip: > pip: >
...@@ -63,19 +65,20 @@ ...@@ -63,19 +65,20 @@
virtualenv={{ devpi_venv_dir }} virtualenv={{ devpi_venv_dir }}
sudo_user: "{{ devpi_user }}" sudo_user: "{{ devpi_user }}"
with_items: devpi_pip_pkgs with_items: devpi_pip_pkgs
notify: supervisor | restart supervisor notify: devpi | restart devpi
- name: devpi | writing supervisor script - name: devpi | writing supervisor script
template: > template: >
src=devpi.conf.j2 dest={{ devpi_supervisor_cfg_dir }}/devpi.conf src=devpi.conf.j2 dest={{ devpi_supervisor_cfg_dir }}/devpi.conf
owner={{ devpi_user }} group={{ devpi_user }} mode=0644 owner={{ devpi_user }} group={{ devpi_user }} mode=0644
notify: supervisor | restart supervisor notify: devpi | restart devpi
- name: devpi | create a symlink for venv python, pip - name: devpi | create a symlink for venv python, pip
file: > file: >
src="{{ devpi_venv_bin }}/{{ item }}" src="{{ devpi_venv_bin }}/{{ item }}"
dest={{ COMMON_BIN_DIR }}/{{ item }}.devpi dest={{ COMMON_BIN_DIR }}/{{ item }}.devpi
state=link state=link
notify: devpi | restart devpi
with_items: with_items:
- python - python
- pip - pip
...@@ -92,7 +95,21 @@ ...@@ -92,7 +95,21 @@
dest={{ COMMON_CFG_DIR }}/supervisord.conf.devpi dest={{ COMMON_CFG_DIR }}/supervisord.conf.devpi
state=link state=link
# flush queued up handlers so that devpi # call supervisorctl update. this reloads
# is restarted since downstream roles # the supervisorctl config and restarts
# will need to use it # the services if any of the configurations
- meta: flush_handlers # have changed.
#
- name: devpi | update devpi supervisor configuration
shell: "{{ devpi_supervisor_ctl }} -c {{ devpi_supervisor_cfg }} update"
register: supervisor_update
changed_when: supervisor_update.stdout != ""
tags: deploy
- name: devpi | ensure devpi is started
supervisorctl: >
state=started
supervisorctl_path={{ devpi_supervisor_ctl }}
config={{ devpi_supervisor_cfg }}
name=devpi-server
sudo_user: "{{ devpi_supervisor_user }}"
...@@ -5,10 +5,7 @@ ...@@ -5,10 +5,7 @@
supervisorctl_path={{ supervisor_ctl }} supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }} config={{ supervisor_cfg }}
state=restarted state=restarted
with_items:
- name: discern | restart discern_celery - discern
supervisorctl: > - discern_celery
name=discern_celery tags: deploy
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=restarted
--- ---
- name: discern | See if supervisord config file `discern.conf` is installed
shell: "[ -f {{ supervisor_cfg_dir }}/discern.conf ] && echo 'Found' || echo ''"
register: discern_installed
tags:
- deploy
- name: discern | See if supervisord `discern_celery.conf` is installed
shell: "[ -f {{ supervisor_cfg_dir }}/discern_celery.conf ] && echo 'Found' || echo ''"
register: discern_celery_installed
tags:
- deploy
# Stop discern service.
- name: discern | stop discern service
supervisorctl: >
name=discern
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=stopped
when: discern_installed.stdout == 'Found'
notify: discern | restart discern
tags:
- deploy
- name: discern | stop discern_celery service
supervisorctl: >
name=discern_celery
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=stopped
when: discern_celery_installed.stdout == 'Found'
notify: discern | restart discern_celery
tags:
- deploy
- name: discern | create supervisor scripts - discern, discern_celery - name: discern | create supervisor scripts - discern, discern_celery
template: > template: >
src={{ item }}.conf.j2 dest={{ supervisor_cfg_dir }}/{{ item }}.conf src={{ item }}.conf.j2 dest={{ supervisor_cfg_dir }}/{{ item }}.conf
owner={{ supervisor_user }} group={{ common_web_user }} mode=0644 owner={{ supervisor_user }} mode=0644
sudo_user: "{{ supervisor_user }}"
with_items: ['discern', 'discern_celery'] with_items: ['discern', 'discern_celery']
tags:
- deploy
#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={{ discern_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 discern_celery
- discern | restart discern - discern | restart discern
tags: tags:
- deploy - deploy
...@@ -58,7 +20,6 @@ ...@@ -58,7 +20,6 @@
template: src=auth.json.j2 dest={{ discern_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 discern_celery
- discern | restart discern - discern | restart discern
tags: tags:
- deploy - deploy
...@@ -67,7 +28,6 @@ ...@@ -67,7 +28,6 @@
git: dest={{ discern_code_dir }} repo={{ discern_source_repo }} version={{ discern_branch }} git: dest={{ discern_code_dir }} repo={{ discern_source_repo }} version={{ discern_branch }}
sudo_user: "{{ discern_user }}" sudo_user: "{{ discern_user }}"
notify: notify:
- discern | restart discern_celery
- discern | restart discern - discern | restart discern
tags: tags:
- deploy - deploy
...@@ -76,7 +36,6 @@ ...@@ -76,7 +36,6 @@
git: dest={{ discern_ease_code_dir}} repo={{ discern_ease_source_repo }} version={{ discern_ease_version }} 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 discern_celery
- discern | restart discern - discern | restart discern
tags: tags:
- deploy - deploy
...@@ -85,6 +44,8 @@ ...@@ -85,6 +44,8 @@
- name : install python pre-requirements for discern and ease - name : install python pre-requirements for discern and ease
pip: requirements={{item}} virtualenv={{ discern_venv_dir }} state=present pip: requirements={{item}} virtualenv={{ discern_venv_dir }} state=present
sudo_user: "{{ discern_user }}" sudo_user: "{{ discern_user }}"
notify:
- discern | restart discern
with_items: with_items:
- "{{ discern_pre_requirements_file }}" - "{{ discern_pre_requirements_file }}"
- "{{ discern_ease_pre_requirements_file }}" - "{{ discern_ease_pre_requirements_file }}"
...@@ -94,6 +55,8 @@ ...@@ -94,6 +55,8 @@
- name : install python requirements for discern and ease - name : install python requirements for discern and ease
pip: requirements={{item}} virtualenv={{ discern_venv_dir }} state=present pip: requirements={{item}} virtualenv={{ discern_venv_dir }} state=present
sudo_user: "{{ discern_user }}" sudo_user: "{{ discern_user }}"
notify:
- discern | restart discern
with_items: with_items:
- "{{ discern_post_requirements_file }}" - "{{ discern_post_requirements_file }}"
- "{{ discern_ease_post_requirements_file }}" - "{{ discern_ease_post_requirements_file }}"
...@@ -103,6 +66,8 @@ ...@@ -103,6 +66,8 @@
- name: discern | install ease python package - name: discern | install ease python package
shell: > shell: >
{{ discern_venv_dir }}/bin/activate; cd {{ discern_ease_code_dir }}; python setup.py install {{ discern_venv_dir }}/bin/activate; cd {{ discern_ease_code_dir }}; python setup.py install
notify:
- discern | restart discern
tags: tags:
- deploy - deploy
...@@ -111,6 +76,8 @@ ...@@ -111,6 +76,8 @@
shell: > shell: >
{{ discern_venv_dir }}/bin/python -m nltk.downloader -d {{ discern_nltk_data_dir }} all {{ discern_venv_dir }}/bin/python -m nltk.downloader -d {{ discern_nltk_data_dir }} all
sudo_user: "{{ discern_user }}" sudo_user: "{{ discern_user }}"
notify:
- discern | restart discern
tags: tags:
- deploy - deploy
...@@ -121,6 +88,8 @@ ...@@ -121,6 +88,8 @@
{{ discern_venv_dir }}/bin/python {{discern_code_dir}}/manage.py {{item}} --noinput --settings={{discern_settings}} --pythonpath={{discern_code_dir}} {{ discern_venv_dir }}/bin/python {{discern_code_dir}}/manage.py {{item}} --noinput --settings={{discern_settings}} --pythonpath={{discern_code_dir}}
chdir={{ discern_code_dir }} chdir={{ discern_code_dir }}
sudo_user: "{{ discern_user }}" sudo_user: "{{ discern_user }}"
notify:
- discern | restart discern
with_items: with_items:
- syncdb - syncdb
- migrate - migrate
...@@ -133,5 +102,31 @@ ...@@ -133,5 +102,31 @@
{{ discern_venv_dir}}/bin/python {{discern_code_dir}}/manage.py update_index --settings={{discern_settings}} --pythonpath={{discern_code_dir}} {{ discern_venv_dir}}/bin/python {{discern_code_dir}}/manage.py update_index --settings={{discern_settings}} --pythonpath={{discern_code_dir}}
chdir={{ discern_code_dir }} chdir={{ discern_code_dir }}
sudo_user: "{{ discern_user }}" sudo_user: "{{ discern_user }}"
notify:
- discern | restart discern
tags: tags:
- deploy - deploy
# call supervisorctl update. this reloads
# the supervisorctl config and restarts
# the services if any of the configurations
# have changed.
#
- name: discern | update supervisor configuration
shell: "{{ supervisor_ctl }} -c {{ supervisor_cfg }} update"
register: supervisor_update
sudo_user: "{{ supervisor_service_user }}"
changed_when: supervisor_update.stdout != ""
tags: deploy
- name: discern | ensure discern, discern_celery has started
supervisorctl: >
name={{ item }}
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=started
with_items:
- discern
- discern_celery
tags: deploy
...@@ -5,6 +5,8 @@ ...@@ -5,6 +5,8 @@
home="{{ discern_app_dir }}" home="{{ discern_app_dir }}"
createhome=no createhome=no
shell=/bin/false shell=/bin/false
notify:
- discern | restart discern
- name: discern | create discern app dirs owned by discern - name: discern | create discern app dirs owned by discern
file: > file: >
...@@ -12,6 +14,8 @@ ...@@ -12,6 +14,8 @@
state=directory state=directory
owner="{{ discern_user }}" owner="{{ discern_user }}"
group="{{ common_web_group }}" group="{{ common_web_group }}"
notify:
- discern | restart discern
with_items: with_items:
- "{{ discern_app_dir }}" - "{{ discern_app_dir }}"
- "{{ discern_venvs_dir }}" - "{{ discern_venvs_dir }}"
...@@ -21,35 +25,33 @@ ...@@ -21,35 +25,33 @@
path="{{ discern_data_dir }}" state=directory path="{{ discern_data_dir }}" state=directory
owner="{{ common_web_user }}" group="{{ discern_user }}" owner="{{ common_web_user }}" group="{{ discern_user }}"
mode=0775 mode=0775
notify:
- discern | restart discern
- 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
notify:
- discern | restart discern
with_items: discern_debian_pkgs with_items: discern_debian_pkgs
- name: discern | install debian packages for ease that discern needs - name: discern | install debian packages for ease that discern needs
apt: pkg={{ item }} state=present apt: pkg={{ item }} state=present
notify:
- discern | restart discern
with_items: discern_ease_debian_pkgs with_items: discern_ease_debian_pkgs
- name: discern | render celery service from template
template: >
src=celery.conf.j2 dest=/etc/init/celery.conf
owner=root group=root
notify: discern | restart discern_celery
- name: discern | render discern service from template
template: >
src=discern.conf.j2 dest=/etc/init/discern.conf
owner=root group=root
notify: discern | restart discern
- name: discern | copy sudoers file for discern - name: discern | copy sudoers file for discern
copy: > copy: >
src=sudoers-discern dest=/etc/sudoers.d/discern src=sudoers-discern dest=/etc/sudoers.d/discern
mode=0440 validate='visudo -cf %s' owner=root group=root mode=0440 validate='visudo -cf %s' owner=root group=root
notify:
- discern | restart discern
#Needed if using redis to prevent memory issues #Needed if using redis to prevent memory issues
- name: discern | change memory commit settings -- needed for redis - name: discern | change memory commit settings -- needed for redis
command: sysctl vm.overcommit_memory=1 command: sysctl vm.overcommit_memory=1
notify:
- discern | restart discern
- include: deploy.yml - include: deploy.yml
......
--- ---
- name: edxapp | start edxapp
service: name=edxapp state=started
tags:
- lms
- lms-preview
- cms
- deploy
- name: edxapp | stop edxapp
service: name=edxapp state=stopped
tags:
- lms
- lms-preview
- cms
- deploy
- name: edxapp | restart edxapp - name: edxapp | restart edxapp
service: name=edxapp state=restarted supervisorctl: >
tags: state=restarted
- lms supervisorctl_path={{ supervisor_ctl }}
- lms-preview config={{ supervisor_cfg }}
- cms name="edxapp:{{ item }}"
- deploy sudo_user: "{{ supervisor_service_user }}"
with_items: service_variants_enabled
tags: deploy
- name: edxapp | restart edxapp_workers
supervisorctl: >
name="edxapp_worker:{{ item.service_variant }}_{{ item.queue }}_{{ item.concurrency }}"
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=restarted
when: celery_worker is defined
with_items: edxapp_workers
sudo_user: "{{ common_web_user }}"
tags: deploy
# Stop all services.
#
#
# TODO: the supervisor ansible module does not support
# stopping and starting services by group.
# Do A Checkout # Do A Checkout
- name: edxapp | checkout edx-platform repo into {{edxapp_code_dir}} - name: edxapp | checkout edx-platform repo into {{edxapp_code_dir}}
git: dest={{edxapp_code_dir}} repo={{edx_platform_repo}} version={{edx_platform_commit}} git: dest={{edxapp_code_dir}} repo={{edx_platform_repo}} version={{edx_platform_commit}}
register: chkout register: chkout
sudo_user: "{{ edxapp_user }}" sudo_user: "{{ edxapp_user }}"
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
tags: deploy tags: deploy
- name: edxapp | git clean after checking out edx-platform - name: edxapp | git clean after checking out edx-platform
shell: cd {{edxapp_code_dir}} && git clean -xdf shell: cd {{edxapp_code_dir}} && git clean -xdf
sudo_user: "{{ edxapp_user }}" sudo_user: "{{ edxapp_user }}"
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
tags: deploy tags: deploy
- name: edxapp | checkout theme - name: edxapp | checkout theme
git: dest={{ edxapp_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 }}"
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
tags: tags:
- deploy - deploy
...@@ -48,6 +50,9 @@ ...@@ -48,6 +50,9 @@
command: | command: |
/bin/sed -i -e 's/github\.com/{{ COMMON_GIT_MIRROR }}/g' {{ " ".join(edxapp_all_req_files) }} /bin/sed -i -e 's/github\.com/{{ COMMON_GIT_MIRROR }}/g' {{ " ".join(edxapp_all_req_files) }}
sudo_user: "{{ edxapp_user }}" sudo_user: "{{ edxapp_user }}"
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
tags: deploy tags: deploy
# Ruby plays that need to be run after platform updates. # Ruby plays that need to be run after platform updates.
...@@ -58,6 +63,9 @@ ...@@ -58,6 +63,9 @@
executable=/bin/bash executable=/bin/bash
environment: "{{ edxapp_environment }}" environment: "{{ edxapp_environment }}"
sudo_user: "{{ edxapp_user }}" sudo_user: "{{ edxapp_user }}"
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
tags: deploy tags: deploy
- name: edxapp | bundle install - name: edxapp | bundle install
...@@ -67,6 +75,9 @@ ...@@ -67,6 +75,9 @@
executable=/bin/bash executable=/bin/bash
sudo_user: "{{ edxapp_user }}" sudo_user: "{{ edxapp_user }}"
environment: "{{ edxapp_environment }}" environment: "{{ edxapp_environment }}"
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
tags: deploy tags: deploy
# Node play that need to be run after platform updates. # Node play that need to be run after platform updates.
...@@ -74,6 +85,9 @@ ...@@ -74,6 +85,9 @@
shell: npm install chdir={{ edxapp_code_dir }} shell: npm install chdir={{ edxapp_code_dir }}
sudo_user: "{{ edxapp_user }}" sudo_user: "{{ edxapp_user }}"
environment: "{{ edxapp_environment }}" environment: "{{ edxapp_environment }}"
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
tags: deploy tags: deploy
...@@ -86,6 +100,9 @@ ...@@ -86,6 +100,9 @@
extra_args="-i {{ edxapp_pypi_local_mirror }}" extra_args="-i {{ edxapp_pypi_local_mirror }}"
sudo_user: "{{ edxapp_user }}" sudo_user: "{{ edxapp_user }}"
environment: "{{ edxapp_environment }}" environment: "{{ edxapp_environment }}"
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
when: not inst.stat.exists or new.stat.md5 != inst.stat.md5 when: not inst.stat.exists or new.stat.md5 != inst.stat.md5
tags: deploy tags: deploy
...@@ -99,6 +116,9 @@ ...@@ -99,6 +116,9 @@
chdir={{ edxapp_code_dir }} chdir={{ edxapp_code_dir }}
environment: "{{ edxapp_environment }}" environment: "{{ edxapp_environment }}"
sudo_user: "{{ edxapp_user }}" sudo_user: "{{ edxapp_user }}"
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
when: not inst.stat.exists or new.stat.md5 != inst.stat.md5 when: not inst.stat.exists or new.stat.md5 != inst.stat.md5
tags: deploy tags: deploy
...@@ -111,6 +131,9 @@ ...@@ -111,6 +131,9 @@
extra_args="-i {{ edxapp_pypi_local_mirror }}" extra_args="-i {{ edxapp_pypi_local_mirror }}"
sudo_user: "{{ edxapp_user }}" sudo_user: "{{ edxapp_user }}"
environment: "{{ edxapp_environment }}" environment: "{{ edxapp_environment }}"
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
when: not inst.stat.exists or new.stat.md5 != inst.stat.md5 when: not inst.stat.exists or new.stat.md5 != inst.stat.md5
tags: deploy tags: deploy
...@@ -125,6 +148,9 @@ ...@@ -125,6 +148,9 @@
- "{{ github_requirements_file }}" - "{{ github_requirements_file }}"
- "{{ local_requirements_file }}" - "{{ local_requirements_file }}"
sudo_user: "{{ edxapp_user }}" sudo_user: "{{ edxapp_user }}"
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
tags: deploy tags: deploy
...@@ -141,11 +167,17 @@ ...@@ -141,11 +167,17 @@
when: install_sandbox_reqs_into_regular_venv when: install_sandbox_reqs_into_regular_venv
sudo_user: "{{ edxapp_user }}" sudo_user: "{{ edxapp_user }}"
when: not inst.stat.exists or new.stat.md5 != inst.stat.md5 when: not inst.stat.exists or new.stat.md5 != inst.stat.md5
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
tags: deploy tags: deploy
- name: edxapp | compiling all py files in the edx-platform repo - name: edxapp | compiling all py files in the edx-platform repo
shell: "{{ edxapp_venv_bin }}/python -m compileall {{ edxapp_code_dir }}" shell: "{{ edxapp_venv_bin }}/python -m compileall {{ edxapp_code_dir }}"
sudo_user: "{{ edxapp_user }}" sudo_user: "{{ edxapp_user }}"
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
tags: deploy tags: deploy
# alternative would be to give {{ common_web_user }} read access # alternative would be to give {{ common_web_user }} read access
...@@ -154,11 +186,15 @@ ...@@ -154,11 +186,15 @@
- name: edxapp | give other read permissions to the virtualenv - name: edxapp | give other read permissions to the virtualenv
command: chmod -R o+r "{{ edxapp_venv_dir }}" command: chmod -R o+r "{{ edxapp_venv_dir }}"
sudo_user: "{{ edxapp_user }}" sudo_user: "{{ edxapp_user }}"
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
tags: deploy tags: deploy
- name: edxapp | create checksum for installed requirements - name: edxapp | create checksum for installed requirements
shell: cp /var/tmp/edxapp.req.new /var/tmp/edxapp.req.installed shell: cp /var/tmp/edxapp.req.new /var/tmp/edxapp.req.installed
sudo_user: "{{ edxapp_user }}" sudo_user: "{{ edxapp_user }}"
notify: "edxapp | restart edxapp"
tags: deploy tags: deploy
...@@ -170,6 +206,9 @@ ...@@ -170,6 +206,9 @@
shell: sed -i -e 's/claimed_id = models.TextField(max_length=2047, unique=True/claimed_id = models.TextField(max_length=2047/' {{ edxapp_venv_dir }}/lib/python2.7/site-packages/django_openid_auth/models.py shell: sed -i -e 's/claimed_id = models.TextField(max_length=2047, unique=True/claimed_id = models.TextField(max_length=2047/' {{ edxapp_venv_dir }}/lib/python2.7/site-packages/django_openid_auth/models.py
when: openid_workaround is defined when: openid_workaround is defined
sudo_user: "{{ edxapp_user }}" sudo_user: "{{ edxapp_user }}"
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
tags: tags:
- deploy - deploy
...@@ -178,26 +217,35 @@ ...@@ -178,26 +217,35 @@
# gather_assets and db migrations # gather_assets and db migrations
- include: service_variant_config.yml - include: service_variant_config.yml
- name: edxapp | restart the edxapp services (supervisor) # call supervisorctl update. this reloads
# the supervisorctl config and restarts
# the services if any of the configurations
# have changed.
- name: edxapp | update supervisor configuration
shell: "{{ supervisor_ctl }} -c {{ supervisor_cfg }} update"
register: supervisor_update
sudo_user: "{{ supervisor_service_user }}"
changed_when: supervisor_update.stdout != ""
tags: deploy
- name: edxapp | ensure edxapp has started
supervisorctl: > supervisorctl: >
name="edxapp:{{ item }}" state=started
supervisorctl_path={{ supervisor_ctl }} supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }} config={{ supervisor_cfg }}
state=restarted name="edxapp:{{ item }}"
when: celery_worker is not defined sudo_user: "{{ supervisor_service_user }}"
with_items: service_variants_enabled with_items: service_variants_enabled
sudo_user: "{{ common_web_user }}" tags: deploy
tags:
- deploy
- name: edxapp | restart the celery worker services (supervisor) - name: edxapp | ensure edxapp_workers has started
supervisorctl: > supervisorctl: >
name="edxapp_worker:{{ item.service_variant }}_{{ item.queue }}_{{ item.concurrency }}" name="edxapp_worker:{{ item.service_variant }}_{{ item.queue }}_{{ item.concurrency }}"
supervisorctl_path={{ supervisor_ctl }} supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }} config={{ supervisor_cfg }}
state=restarted state=started
when: celery_worker is defined when: celery_worker is defined
with_items: edxapp_workers with_items: edxapp_workers
sudo_user: "{{ common_web_user }}" sudo_user: "{{ supervisor_service_user }}"
tags: tags: deploy
- deploy
...@@ -6,16 +6,25 @@ ...@@ -6,16 +6,25 @@
- name: edxapp | Install logrotate configuration for tracking file - name: edxapp | Install logrotate configuration for tracking file
template: dest=/etc/logrotate.d/tracking.log src=edx_logrotate_tracking_log.j2 owner=root group=root mode=644 template: dest=/etc/logrotate.d/tracking.log src=edx_logrotate_tracking_log.j2 owner=root group=root mode=644
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
- name: edxapp | create application user - name: edxapp | create application user
user: > user: >
name="{{ edxapp_user }}" home="{{ edxapp_app_dir }}" name="{{ edxapp_user }}" home="{{ edxapp_app_dir }}"
createhome=no shell=/bin/false createhome=no shell=/bin/false
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
- name: edxapp | create edxapp user dirs - name: edxapp | create edxapp user dirs
file: > file: >
path="{{ item }}" state=directory path="{{ item }}" state=directory
owner="{{ edxapp_user }}" group="{{ common_web_group }}" owner="{{ edxapp_user }}" group="{{ common_web_group }}"
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
with_items: with_items:
- "{{ edxapp_app_dir }}" - "{{ edxapp_app_dir }}"
- "{{ edxapp_data_dir }}" - "{{ edxapp_data_dir }}"
...@@ -27,20 +36,32 @@ ...@@ -27,20 +36,32 @@
file: > file: >
path="{{ edxapp_log_dir }}" state=directory path="{{ edxapp_log_dir }}" state=directory
owner="{{ common_log_user }}" group="{{ common_log_user }}" owner="{{ common_log_user }}" group="{{ common_log_user }}"
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
- name: edxapp | create web-writable edxapp data dirs - name: edxapp | create web-writable edxapp data dirs
file: > file: >
path="{{ item }}" state=directory path="{{ item }}" state=directory
owner="{{ common_web_user }}" group="{{ edxapp_user }}" owner="{{ common_web_user }}" group="{{ edxapp_user }}"
mode="0775" mode="0775"
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
with_items: with_items:
- "{{ edxapp_course_data_dir }}" - "{{ edxapp_course_data_dir }}"
- "{{ edxapp_upload_dir }}" - "{{ edxapp_upload_dir }}"
- name: edxapp | install system packages on which LMS and CMS rely - name: edxapp | install system packages on which LMS and CMS rely
apt: pkg={{','.join(edxapp_debian_pkgs)}} state=present apt: pkg={{','.join(edxapp_debian_pkgs)}} state=present
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
- name: edxapp | create log directories for service variants - name: edxapp | create log directories for service variants
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
file: > file: >
path={{ edxapp_log_dir }}/{{ item }} state=directory path={{ edxapp_log_dir }}/{{ item }} state=directory
owner={{ common_log_user }} group={{ common_log_user }} owner={{ common_log_user }} group={{ common_log_user }}
...@@ -48,6 +69,9 @@ ...@@ -48,6 +69,9 @@
with_items: service_variants_enabled with_items: service_variants_enabled
- name: edxapp | setup the edxapp env - name: edxapp | setup the edxapp env
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
template: > template: >
src=edxapp_env.j2 dest={{ edxapp_app_dir }}/edxapp_env src=edxapp_env.j2 dest={{ edxapp_app_dir }}/edxapp_env
owner={{ edxapp_user }} group={{ common_web_user }} owner={{ edxapp_user }} group={{ common_web_user }}
......
...@@ -4,6 +4,9 @@ ...@@ -4,6 +4,9 @@
dest={{ edxapp_app_dir }}/{{ item }}.env.json dest={{ edxapp_app_dir }}/{{ item }}.env.json
sudo_user: "{{ edxapp_user }}" sudo_user: "{{ edxapp_user }}"
with_items: service_variants_enabled with_items: service_variants_enabled
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
tags: tags:
- deploy - deploy
...@@ -12,12 +15,14 @@ ...@@ -12,12 +15,14 @@
src={{ item }}.auth.json.j2 src={{ item }}.auth.json.j2
dest={{ edxapp_app_dir }}/{{ item }}.auth.json dest={{ edxapp_app_dir }}/{{ item }}.auth.json
sudo_user: "{{ edxapp_user }}" sudo_user: "{{ edxapp_user }}"
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
with_items: service_variants_enabled with_items: service_variants_enabled
tags: tags:
- deploy - deploy
# write the supervisor script for {{ service_variant }} # write the supervisor scripts for the service variants
# for non-celery servers
- name: "writing {{ item }} supervisor script" - name: "writing {{ item }} supervisor script"
template: > template: >
...@@ -25,7 +30,6 @@ ...@@ -25,7 +30,6 @@
owner={{ supervisor_user }} owner={{ supervisor_user }}
with_items: service_variants_enabled with_items: service_variants_enabled
when: celery_worker is not defined when: celery_worker is not defined
notify: supervisor | reload supervisor
sudo_user: "{{ supervisor_user }}" sudo_user: "{{ supervisor_user }}"
tags: tags:
- deploy - deploy
...@@ -35,21 +39,10 @@ ...@@ -35,21 +39,10 @@
src=edxapp.conf.j2 dest={{ supervisor_cfg_dir }}/edxapp.conf src=edxapp.conf.j2 dest={{ supervisor_cfg_dir }}/edxapp.conf
owner={{ supervisor_user }} owner={{ supervisor_user }}
when: celery_worker is not defined when: celery_worker is not defined
notify: supervisor | reload supervisor
sudo_user: "{{ supervisor_user }}" sudo_user: "{{ supervisor_user }}"
tags: tags:
- deploy - deploy
- name: "edxapp | ensuring edxapp is activated in supervisor"
supervisorctl: >
name="edxapp"
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=present
when: celery_worker is not defined
tags:
- deploy
# write the supervisor script for celery workers # write the supervisor script for celery workers
- name: edxapp | writing celery worker supervisor script - name: edxapp | writing celery worker supervisor script
...@@ -57,20 +50,10 @@ ...@@ -57,20 +50,10 @@
src=workers.conf.j2 dest={{ supervisor_cfg_dir }}/workers.conf src=workers.conf.j2 dest={{ supervisor_cfg_dir }}/workers.conf
owner={{ supervisor_user }} owner={{ supervisor_user }}
when: celery_worker is defined when: celery_worker is defined
notify: supervisor | reload supervisor
sudo_user: "{{ supervisor_user }}" sudo_user: "{{ supervisor_user }}"
tags: tags:
- deploy - deploy
- name: edxapp | ensuring edxapp_worker is activated in supervisor
supervisorctl: >
name="edxapp_worker"
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=present
when: celery_worker is defined
tags:
- deploy
# Gather assets using rake if possible # Gather assets using rake if possible
...@@ -82,6 +65,9 @@ ...@@ -82,6 +65,9 @@
sudo_user: "{{ edxapp_user }}" sudo_user: "{{ edxapp_user }}"
when: celery_worker is not defined when: celery_worker is not defined
with_items: service_variants_enabled with_items: service_variants_enabled
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
environment: "{{ edxapp_environment }}" environment: "{{ edxapp_environment }}"
tags: tags:
- deploy - deploy
...@@ -91,14 +77,18 @@ ...@@ -91,14 +77,18 @@
shell: SERVICE_VARIANT=lms {{ edxapp_venv_bin}}/django-admin.py syncdb --migrate --noinput --settings=lms.envs.aws --pythonpath={{ edxapp_code_dir }} shell: 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: migrate_db is defined and migrate_db|lower == "yes"
sudo_user: "{{ edxapp_user }}" sudo_user: "{{ edxapp_user }}"
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
tags: tags:
- deploy - deploy
- name: edxapp | db migrate - name: edxapp | db migrate
shell: SERVICE_VARIANT=lms {{ edxapp_venv_bin }}/django-admin.py migrate --noinput --settings=lms.envs.aws --pythonpath={{ edxapp_code_dir }} shell: 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: migrate_only is defined and migrate_only|lower == "yes"
notify:
- "edxapp | restart edxapp"
- "edxapp | restart edxapp_workers"
sudo_user: "{{ edxapp_user }}" sudo_user: "{{ edxapp_user }}"
tags: tags:
- deploy - deploy
...@@ -5,3 +5,4 @@ ...@@ -5,3 +5,4 @@
supervisorctl_path={{ supervisor_ctl }} supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }} config={{ supervisor_cfg }}
state=restarted state=restarted
tags: deploy
--- ---
- name: forum | create the supervisor config
template: >
src=forum.conf.j2 dest={{ supervisor_cfg_dir }}/forum.conf
owner={{ supervisor_user }}
mode=0644
sudo_user: "{{ supervisor_user }}"
register: forum_supervisor
tags: deploy
- name: forum | create the supervisor wrapper - name: forum | create the supervisor wrapper
template: > template: >
src={{ forum_supervisor_wrapper|basename }}.j2 src={{ forum_supervisor_wrapper|basename }}.j2
dest={{ forum_supervisor_wrapper }} dest={{ forum_supervisor_wrapper }}
mode=0755 mode=0755
sudo_user: "{{ forum_user }}" sudo_user: "{{ forum_user }}"
tags: notify: forum | restart the forum service
- deploy tags: deploy
- name: forum | git checkout forum repo into {{ forum_code_dir }} - name: forum | git checkout forum repo into {{ forum_code_dir }}
git: dest={{ forum_code_dir }} repo={{ forum_source_repo }} version={{ forum_version }} git: dest={{ forum_code_dir }} repo={{ forum_source_repo }} version={{ forum_version }}
sudo_user: "{{ forum_user }}" sudo_user: "{{ forum_user }}"
tags: notify: forum | restart the forum service
- deploy tags: deploy
# TODO: This is done as the common_web_user # TODO: This is done as the common_web_user
# since the process owner needs write access # since the process owner needs write access
...@@ -22,23 +31,24 @@ ...@@ -22,23 +31,24 @@
shell: bundle install chdir={{ forum_code_dir }} shell: bundle install chdir={{ forum_code_dir }}
sudo_user: "{{ common_web_user }}" sudo_user: "{{ common_web_user }}"
environment: "{{ forum_environment }}" environment: "{{ forum_environment }}"
tags: notify: forum | restart the forum service
- deploy tags: deploy
- name: forum | create the supervisor config # call supervisorctl update. this reloads
template: > # the supervisorctl config and restarts
src=forum.conf.j2 dest={{ supervisor_cfg_dir }}/forum.conf # the services if any of the configurations
owner={{ common_web_user }} group={{ supervisor_user }} # have changed.
mode=0644 #
register: forum_supervisor - name: forum | update supervisor configuration
tags: shell: "{{ supervisor_ctl }} -c {{ supervisor_cfg }} update"
- deploy register: supervisor_update
changed_when: supervisor_update.stdout != ""
tags: deploy
- name: forum | restart the forum service - name: forum | ensure forum is started
supervisorctl: > supervisorctl: >
name=forum name=forum
supervisorctl_path={{ supervisor_ctl }} supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }} config={{ supervisor_cfg }}
state=restarted state=started
tags: tags: deploy
- deploy
...@@ -26,11 +26,13 @@ ...@@ -26,11 +26,13 @@
name="{{ forum_user }}" home="{{ forum_app_dir }}" name="{{ forum_user }}" home="{{ forum_app_dir }}"
createhome=no createhome=no
shell=/bin/false shell=/bin/false
notify: forum | restart the forum service
- name: forum | create forum app dir - name: forum | create forum app dir
file: > file: >
path="{{ forum_app_dir }}" state=directory path="{{ forum_app_dir }}" state=directory
owner="{{ forum_user }}" group="{{ common_web_group }}" owner="{{ forum_user }}" group="{{ common_web_group }}"
notify: forum | restart the forum service
- name: forum | setup the forum env - name: forum | setup the forum env
template: > template: >
...@@ -40,13 +42,6 @@ ...@@ -40,13 +42,6 @@
notify: notify:
- forum | restart the forum service - forum | restart the forum service
- name: forum | create the supervisor config
template: >
src=forum.conf.j2 dest={{ supervisor_cfg_dir }}/forum.conf
owner={{ common_web_user }} group={{ supervisor_user }}
mode=0644
register: forum_supervisor
- include: deploy.yml - include: deploy.yml
- include: test.yml - include: test.yml
--- ---
- name: restart mongo - name: restart mongo
service: name=mongodb state=restarted service: name=mongodb state=restarted
tags: deploy
--- ---
- name: nginx | restart nginx - name: nginx | restart nginx
service: name=nginx state=restarted service: name=nginx state=restarted
tags: deploy
- name: nginx | reload nginx - name: nginx | reload nginx
service: name=nginx state=reloaded service: name=nginx state=reloaded
tags: deploy
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
state=restarted state=restarted
config={{ supervisor_cfg }} config={{ supervisor_cfg }}
supervisorctl_path={{ supervisor_ctl }} supervisorctl_path={{ supervisor_ctl }}
tags: deploy
- name: notifier | restart notifier-celery-workers - name: notifier | restart notifier-celery-workers
supervisorctl: > supervisorctl: >
...@@ -13,3 +14,4 @@ ...@@ -13,3 +14,4 @@
state=restarted state=restarted
config={{ supervisor_cfg }} config={{ supervisor_cfg }}
supervisorctl_path={{ supervisor_ctl }} supervisorctl_path={{ supervisor_ctl }}
tags: deploy
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
supervisorctl_path={{ supervisor_ctl }} supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }} config={{ supervisor_cfg }}
state=restarted state=restarted
tags: deploy
- name: ora | restart ora_celery - name: ora | restart ora_celery
supervisorctl: > supervisorctl: >
...@@ -12,3 +13,4 @@ ...@@ -12,3 +13,4 @@
supervisorctl_path={{ supervisor_ctl }} supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }} config={{ supervisor_cfg }}
state=restarted state=restarted
tags: deploy
- name: ora | create supervisor scripts - ora, ora_celery
- name: ora | See if supervisord config file `ora.conf` is installed template: >
shell: "[ -f {{ supervisor_cfg_dir }}/ora.conf ] && echo 'Found' || echo ''" src={{ item }}.conf.j2 dest={{ supervisor_cfg_dir }}/{{ item }}.conf
register: ora_installed owner={{ supervisor_user }} group={{ common_web_user }} mode=0644
tags: notify:
- deploy - ora | restart ora
- ora | restart ora_celery
- name: ora | See if supervisord `ora_celery.conf` is installed with_items: ['ora', 'ora_celery']
shell: "[ -f {{ supervisor_cfg_dir }}/ora_celery.conf ] && echo 'Found' || echo ''"
register: ora_celery_installed
tags:
- deploy
# Stop ora service.
- name: ora | stop ora service
supervisorctl: >
name=ora
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=stopped
when: ora_installed.stdout == 'Found'
notify: ora | restart ora
tags:
- deploy
- name: ora | stop ora_celery service
supervisorctl: >
name=ora_celery
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=stopped
when: ora_celery_installed.stdout == 'Found'
notify: ora | restart ora_celery
tags: tags:
- deploy - deploy
...@@ -48,24 +23,6 @@ ...@@ -48,24 +23,6 @@
tags: tags:
- deploy - deploy
- name: ora | create supervisor scripts - ora, ora_celery
template: >
src={{ item }}.conf.j2 dest={{ supervisor_cfg_dir }}/{{ item }}.conf
owner={{ supervisor_user }} group={{ common_web_user }} mode=0644
with_items: ['ora', 'ora_celery']
tags:
- deploy
- name: ora | ensuring ora and ora_celery are activated in supervisor
supervisorctl: >
name="{{ item }}"
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=present
with_items: ['ora', 'ora_celery']
tags:
- deploy
# Do A Checkout # Do A Checkout
- name: ora | git checkout ora repo into {{ ora_app_dir }} - name: ora | git checkout ora repo into {{ ora_app_dir }}
git: dest={{ ora_code_dir }} repo={{ ora_source_repo }} version={{ ora_version }} git: dest={{ ora_code_dir }} repo={{ ora_source_repo }} version={{ ora_version }}
...@@ -127,3 +84,31 @@ ...@@ -127,3 +84,31 @@
- ora | restart ora_celery - ora | restart ora_celery
tags: tags:
- deploy - deploy
# call supervisorctl update. this reloads
# the supervisorctl config and restarts
# the services if any of the configurations
# have changed.
#
- name: ora | update supervisor configuration
shell: "{{ supervisor_ctl }} -c {{ supervisor_cfg }} update"
register: supervisor_update
changed_when: supervisor_update.stdout != ""
tags: deploy
- name: ora | ensure ora is started
supervisorctl: >
name=ora
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=started
tags: deploy
- name: ora | ensure ora_celery is started
supervisorctl: >
name=ora_celery
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=started
tags: deploy
...@@ -2,12 +2,18 @@ ...@@ -2,12 +2,18 @@
- name: ora | git checkout ease repo into its base dir - name: ora | git checkout ease repo into its base dir
git: dest={{ora_ease_code_dir}} repo={{ora_ease_source_repo}} version={{ora_ease_version}} git: dest={{ora_ease_code_dir}} repo={{ora_ease_source_repo}} version={{ora_ease_version}}
sudo_user: "{{ ora_user }}" sudo_user: "{{ ora_user }}"
notify:
- ora | restart ora
- ora | restart ora_celery
tags: tags:
- deploy - deploy
- name: ora | install ease system packages - name: ora | install ease system packages
apt: pkg={{item}} state=present apt: pkg={{item}} state=present
with_items: ora_ease_debian_pkgs with_items: ora_ease_debian_pkgs
notify:
- ora | restart ora
- ora | restart ora_celery
tags: tags:
- deploy - deploy
...@@ -16,6 +22,9 @@ ...@@ -16,6 +22,9 @@
- name: ora | install ease python pre-requirements - name: ora | install ease python pre-requirements
pip: requirements="{{ora_ease_pre_requirements_file}}" virtualenv="{{ora_ease_venv_dir}}" state=present pip: requirements="{{ora_ease_pre_requirements_file}}" virtualenv="{{ora_ease_venv_dir}}" state=present
sudo_user: "{{ ora_user }}" sudo_user: "{{ ora_user }}"
notify:
- ora | restart ora
- ora | restart ora_celery
tags: tags:
- deploy - deploy
...@@ -23,6 +32,9 @@ ...@@ -23,6 +32,9 @@
- name: ora | install ease python post-requirements - name: ora | install ease python post-requirements
pip: requirements="{{ora_ease_post_requirements_file}}" virtualenv="{{ora_ease_venv_dir}}" state=present pip: requirements="{{ora_ease_post_requirements_file}}" virtualenv="{{ora_ease_venv_dir}}" state=present
sudo_user: "{{ ora_user }}" sudo_user: "{{ ora_user }}"
notify:
- ora | restart ora
- ora | restart ora_celery
tags: tags:
- deploy - deploy
...@@ -30,6 +42,9 @@ ...@@ -30,6 +42,9 @@
shell: > shell: >
. {{ ora_ease_venv_dir }}/bin/activate; cd {{ ora_ease_code_dir }}; python setup.py install . {{ ora_ease_venv_dir }}/bin/activate; cd {{ ora_ease_code_dir }}; python setup.py install
sudo_user: "{{ ora_user }}" sudo_user: "{{ ora_user }}"
notify:
- ora | restart ora
- ora | restart ora_celery
tags: tags:
- deploy - deploy
...@@ -37,6 +52,9 @@ ...@@ -37,6 +52,9 @@
- 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 {{ ora_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: ora_nltk_data_installed register: ora_nltk_data_installed
notify:
- ora | restart ora
- ora | restart ora_celery
tags: tags:
- deploy - deploy
...@@ -45,5 +63,8 @@ ...@@ -45,5 +63,8 @@
command: "{{ora_ease_venv_dir}}/bin/python -m nltk.downloader -d {{ ora_nltk_data_dir }} all" command: "{{ora_ease_venv_dir}}/bin/python -m nltk.downloader -d {{ ora_nltk_data_dir }} all"
when: ora_nltk_data_installed.stdout != "Found" when: ora_nltk_data_installed.stdout != "Found"
sudo_user: "{{ common_web_user }}" sudo_user: "{{ common_web_user }}"
notify:
- ora | restart ora
- ora | restart ora_celery
tags: tags:
- deploy - deploy
...@@ -7,11 +7,17 @@ ...@@ -7,11 +7,17 @@
user: > user: >
name="{{ ora_user }}" home="{{ ora_app_dir }}" name="{{ ora_user }}" home="{{ ora_app_dir }}"
createhome=no shell=/bin/false createhome=no shell=/bin/false
notify:
- ora | restart ora
- ora | restart ora_celery
- name: ora | create ora app dir - name: ora | create ora app dir
file: > file: >
path="{{ item }}" state=directory path="{{ item }}" state=directory
owner="{{ ora_user }}" group="{{ common_web_group }}" owner="{{ ora_user }}" group="{{ common_web_group }}"
notify:
- ora | restart ora
- ora | restart ora_celery
with_items: with_items:
- "{{ ora_venvs_dir }}" - "{{ ora_venvs_dir }}"
- "{{ ora_app_dir }}" - "{{ ora_app_dir }}"
...@@ -20,16 +26,25 @@ ...@@ -20,16 +26,25 @@
file: > file: >
path="{{ item }}" state=directory path="{{ item }}" state=directory
owner="{{ common_web_user }}" group="{{ common_web_group }}" owner="{{ common_web_user }}" group="{{ common_web_group }}"
notify:
- ora | restart ora
- ora | restart ora_celery
with_items: with_items:
- "{{ ora_data_dir }}" - "{{ ora_data_dir }}"
- "{{ ora_app_dir }}/ml_models" - "{{ ora_app_dir }}/ml_models"
- name: ora | install debian packages that ora needs - name: ora | install debian packages that ora needs
apt: pkg={{item}} state=present apt: pkg={{item}} state=present
notify:
- ora | restart ora
- ora | restart ora_celery
with_items: ora_debian_pkgs with_items: ora_debian_pkgs
- name: ora | install debian packages for ease that ora needs - name: ora | install debian packages for ease that ora needs
apt: pkg={{item}} state=present apt: pkg={{item}} state=present
notify:
- ora | restart ora
- ora | restart ora_celery
with_items: ora_ease_debian_pkgs with_items: ora_ease_debian_pkgs
- include: deploy.yml - include: deploy.yml
...@@ -41,3 +56,5 @@ ...@@ -41,3 +56,5 @@
with_items: with_items:
- python - python
- pip - pip
- name: supervisor | restart supervisor
service: >
name={{ supervisor_service }}
state=restarted
- name: supervisor | reload supervisor
shell: "{{ supervisor_ctl }} -c {{ supervisor_cfg }} reload"
...@@ -87,20 +87,17 @@ ...@@ -87,20 +87,17 @@
- 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: > template: >
src=supervisor-upstart.conf.j2 dest=/etc/init/{{ supervisor_service }}.conf src=supervisor-upstart.conf.j2 dest=/etc/init/{{ supervisor_service }}.conf
owner=root group=root owner=root group=root
notify: supervisor | restart supervisor
- name: supervisor | create supervisor master config - name: supervisor | create supervisor master config
template: > template: >
src=supervisord.conf.j2 dest={{ supervisor_cfg }} src=supervisord.conf.j2 dest={{ supervisor_cfg }}
owner={{ supervisor_user }} group={{ supervisor_service_user }} owner={{ supervisor_user }} group={{ supervisor_service_user }}
mode=0644 mode=0644
notify: supervisor | restart supervisor
- name: supervisor | create a symlink for supervisortctl - name: supervisor | create a symlink for supervisortctl
file: > file: >
...@@ -108,7 +105,6 @@ ...@@ -108,7 +105,6 @@
dest={{ COMMON_BIN_DIR }}/{{ supervisor_ctl|basename }} dest={{ COMMON_BIN_DIR }}/{{ supervisor_ctl|basename }}
state=link state=link
when: supervisor_service == "supervisor" when: supervisor_service == "supervisor"
notify: supervisor | restart supervisor
- name: supervisor | create a symlink for supervisor cfg - name: supervisor | create a symlink for supervisor cfg
file: > file: >
...@@ -119,9 +115,26 @@ ...@@ -119,9 +115,26 @@
with_items: with_items:
- "{{ supervisor_cfg }}" - "{{ supervisor_cfg }}"
- "{{ supervisor_cfg_dir }}" - "{{ supervisor_cfg_dir }}"
notify: supervisor | restart supervisor
- name: supervisor | start supervisor - name: supervisor | start supervisor
service: > service: >
name={{supervisor_service}} name={{supervisor_service}}
state=started state=started
register: start_supervisor
# calling update on supervisor too soon after it
# starts will result in an errror.
- name: supervisor | wait for web port to be available
wait_for: port={{ supervisor_http_bind_port }} timeout=5
when: start_supervisor.changed
# call supervisorctl update every time, this reloads
# the supervisorctl config
#
# we don't use notifications for supervisor because
# they don't work well with parameterized roles.
# See https://github.com/ansible/ansible/issues/4853
- name: supervisor | update supervisor configuration
shell: "{{ supervisor_ctl }} -c {{ supervisor_cfg }} update"
register: supervisor_update
changed_when: supervisor_update.stdout != ""
- name: xqueue | stop xqueue
supervisorctl: >
name=xqueue
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=stopped
tags:
- deploy
- name: xqueue | start xqueue
supervisorctl: >
name=xqueue
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=started
tags:
- deploy
- name: xqueue | restart xqueue - name: xqueue | restart xqueue
supervisorctl: > supervisorctl: >
name=xqueue name={{ item }}
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=restarted
tags:
- deploy
- name: xqueue | restart xqueue consumer
supervisorctl: >
name=xqueue_consumer
supervisorctl_path={{ supervisor_ctl }} supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }} config={{ supervisor_cfg }}
state=restarted state=restarted
with_items:
- xqueue
- xqueue_consumer
tags: deploy
- name: xqueue | stop xqueue consumer service - name: "xqueue | writing supervisor scripts - xqueue, xqueue consumer"
supervisorctl: > template: >
name=xqueue_consumer src={{ item }}.conf.j2 dest={{ supervisor_cfg_dir }}/{{ item }}.conf
supervisorctl_path={{ supervisor_ctl }} owner={{ supervisor_user }} group={{ common_web_user }} mode=0644
config={{ supervisor_cfg }} with_items: ['xqueue', 'xqueue_consumer']
state=stopped
tags: tags:
- 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=0644 template: src=xqueue.env.json.j2 dest={{ xqueue_app_dir }}/xqueue.env.json mode=0644
sudo_user: "{{ xqueue_user }}" sudo_user: "{{ xqueue_user }}"
notify:
- xqueue | restart xqueue
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=0644 template: src=xqueue.auth.json.j2 dest={{ xqueue_app_dir }}/xqueue.auth.json mode=0644
sudo_user: "{{ xqueue_user }}" sudo_user: "{{ xqueue_user }}"
notify:
- xqueue | restart xqueue
tags: tags:
- deploy - deploy
- name: "xqueue | writing supervisor scripts - xqueue, xqueue consumer"
template: >
src={{ item }}.conf.j2 dest={{ supervisor_cfg_dir }}/{{ item }}.conf
owner={{ supervisor_user }} group={{ common_web_user }} mode=0644
with_items: ['xqueue', 'xqueue_consumer']
tags:
- deploy
- name: xqueue | ensuring xqueue and xqueue_consumer are activated in supervisor
supervisorctl: >
name="{{ item }}"
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=present
with_items: ['xqueue', 'xqueue_consumer']
tags:
- deploy
# Do A Checkout # Do A Checkout
- name: xqueue | git checkout xqueue repo into xqueue_code_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 }}"
notify:
- xqueue | restart xqueue
tags: tags:
- deploy - deploy
...@@ -49,6 +37,8 @@ ...@@ -49,6 +37,8 @@
- 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 }}"
notify:
- xqueue | restart xqueue
tags: tags:
- deploy - deploy
...@@ -56,6 +46,8 @@ ...@@ -56,6 +46,8 @@
- 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 }}"
notify:
- xqueue | restart xqueue
tags: tags:
- deploy - deploy
...@@ -64,6 +56,8 @@ ...@@ -64,6 +56,8 @@
SERVICE_VARIANT=xqueue {{ xqueue_venv_bin }}/django-admin.py syncdb --migrate --noinput --settings=xqueue.aws_settings --pythonpath={{ xqueue_code_dir }} 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 }}"
notify:
- xqueue | restart xqueue
tags: tags:
- deploy - deploy
...@@ -71,23 +65,30 @@ ...@@ -71,23 +65,30 @@
shell: > shell: >
SERVICE_VARIANT=xqueue {{ xqueue_venv_bin }}/django-admin.py update_users --settings=xqueue.aws_settings --pythonpath={{ xqueue_code_dir }} SERVICE_VARIANT=xqueue {{ xqueue_venv_bin }}/django-admin.py update_users --settings=xqueue.aws_settings --pythonpath={{ xqueue_code_dir }}
sudo_user: "{{ xqueue_user }}" sudo_user: "{{ xqueue_user }}"
notify:
- xqueue | restart xqueue
tags: tags:
- deploy - deploy
- name: xqueue | restart xqueue
supervisorctl: >
name=xqueue
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=restarted
tags:
- deploy
- name: xqueue | restart xqueue consumer # call supervisorctl update. this reloads
# the supervisorctl config and restarts
# the services if any of the configurations
# have changed.
#
- name: xqueue | update supervisor configuration
shell: "{{ supervisor_ctl }} -c {{ supervisor_cfg }} update"
register: supervisor_update
changed_when: supervisor_update.stdout != ""
tags: deploy
- name: xqueue | ensure xqueue, consumer is running
supervisorctl: > supervisorctl: >
name=xqueue_consumer name={{ item }}
supervisorctl_path={{ supervisor_ctl }} supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }} config={{ supervisor_cfg }}
state=restarted state=started
tags: with_items:
- deploy - xqueue
- xqueue_consumer
tags: deploy
...@@ -12,6 +12,8 @@ ...@@ -12,6 +12,8 @@
home="{{ xqueue_app_dir }}" home="{{ xqueue_app_dir }}"
createhome=no createhome=no
shell=/bin/false shell=/bin/false
notify:
- xqueue | restart xqueue
- name: xqueue | create xqueue app and venv dir - name: xqueue | create xqueue app and venv dir
file: > file: >
...@@ -19,6 +21,8 @@ ...@@ -19,6 +21,8 @@
state=directory state=directory
owner="{{ xqueue_user }}" owner="{{ xqueue_user }}"
group="{{ common_web_group }}" group="{{ common_web_group }}"
notify:
- xqueue | restart xqueue
with_items: with_items:
- "{{ xqueue_app_dir }}" - "{{ xqueue_app_dir }}"
- "{{ xqueue_venvs_dir }}" - "{{ xqueue_venvs_dir }}"
...@@ -27,8 +31,6 @@ ...@@ -27,8 +31,6 @@
apt: pkg={{','.join(xqueue_debian_pkgs)}} state=present apt: pkg={{','.join(xqueue_debian_pkgs)}} state=present
notify: notify:
- xqueue | restart xqueue - xqueue | restart xqueue
- xqueue | restart xqueue consumer
- name: xqueue | create xqueue db - name: xqueue | create xqueue db
mysql_db: > mysql_db: >
...@@ -38,6 +40,8 @@ ...@@ -38,6 +40,8 @@
login_password={{xqueue_auth_config.DATABASES.default.PASSWORD}} login_password={{xqueue_auth_config.DATABASES.default.PASSWORD}}
state=present state=present
encoding=utf8 encoding=utf8
notify:
- xqueue | restart xqueue
when: xqueue_create_db is defined and xqueue_create_db|lower == "yes" when: xqueue_create_db is defined and xqueue_create_db|lower == "yes"
- include: deploy.yml - include: deploy.yml
...@@ -50,3 +54,6 @@ ...@@ -50,3 +54,6 @@
with_items: with_items:
- python - python
- pip - pip
---
#
# edX Configuration
#
# github: https://github.com/edx/configuration
# wiki: https://github.com/edx/configuration/wiki
# code style: https://github.com/edx/configuration/wiki/Ansible-Coding-Conventions
# license: https://github.com/edx/configuration/blob/master/LICENSE.TXT
#
#
#
# Handlers for role xserver
#
# Overview:
#
- name: xserver | restart xserver
supervisorctl: >
name=xserver
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=restarted
tags: deploy
- name: xserver | checkout code
git: dest={{xserver_code_dir}} repo={{xserver_source_repo}} version={{xserver_version}}
sudo_user: "{{ xserver_user }}"
tags:
- deploy
- name: "xserver | writing supervisor script" - name: "xserver | writing supervisor script"
template: > template: >
src=xserver.conf.j2 dest={{ supervisor_cfg_dir }}/xserver.conf src=xserver.conf.j2 dest={{ supervisor_cfg_dir }}/xserver.conf
...@@ -11,21 +5,31 @@ ...@@ -11,21 +5,31 @@
tags: tags:
- deploy - deploy
- name: xserver | checkout code
git: dest={{xserver_code_dir}} repo={{xserver_source_repo}} version={{xserver_version}}
sudo_user: "{{ xserver_user }}"
notify: xserver | restart xserver
tags:
- deploy
- name: xserver | install requirements - name: xserver | install requirements
pip: requirements="{{xserver_requirements_file}}" virtualenv="{{ xserver_venv_dir }}" state=present pip: requirements="{{xserver_requirements_file}}" virtualenv="{{ xserver_venv_dir }}" state=present
sudo_user: "{{ xserver_user }}" sudo_user: "{{ xserver_user }}"
notify: xserver | restart xserver
tags: tags:
- deploy - deploy
- name: xserver | install sandbox requirements - name: xserver | install sandbox requirements
pip: requirements="{{xserver_requirements_file}}" virtualenv="{{xserver_venv_sandbox_dir}}" state=present pip: requirements="{{xserver_requirements_file}}" virtualenv="{{xserver_venv_sandbox_dir}}" state=present
sudo_user: "{{ xserver_user }}" sudo_user: "{{ xserver_user }}"
notify: xserver | restart xserver
tags: tags:
- 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 template: src=xserver.env.json.j2 dest={{ xserver_app_dir }}/env.json
sudo_user: "{{ xserver_user }}" sudo_user: "{{ xserver_user }}"
notify: xserver | restart xserver
tags: tags:
- deploy - deploy
...@@ -33,6 +37,7 @@ ...@@ -33,6 +37,7 @@
copy: > copy: >
src={{ XSERVER_LOCAL_GIT_IDENTITY }} dest={{ xserver_git_identity }} src={{ XSERVER_LOCAL_GIT_IDENTITY }} dest={{ xserver_git_identity }}
owner={{ xserver_user }} group={{ xserver_user }} mode=0600 owner={{ xserver_user }} group={{ xserver_user }} mode=0600
notify: xserver | restart xserver
tags: tags:
- deploy - deploy
...@@ -40,6 +45,7 @@ ...@@ -40,6 +45,7 @@
template: > template: >
src=git_ssh.sh.j2 dest=/tmp/git_ssh.sh src=git_ssh.sh.j2 dest=/tmp/git_ssh.sh
owner={{ xserver_user }} mode=750 owner={{ xserver_user }} mode=750
notify: xserver | restart xserver
tags: tags:
- deploy - deploy
...@@ -47,20 +53,33 @@ ...@@ -47,20 +53,33 @@
git: dest={{ XSERVER_GRADER_DIR }} repo={{ XSERVER_GRADER_SOURCE }} version={{ xserver_grader_version }} git: dest={{ XSERVER_GRADER_DIR }} repo={{ XSERVER_GRADER_SOURCE }} version={{ xserver_grader_version }}
environment: environment:
GIT_SSH: /tmp/git_ssh.sh GIT_SSH: /tmp/git_ssh.sh
notify: xserver | restart xserver
sudo_user: "{{ xserver_user }}" sudo_user: "{{ xserver_user }}"
tags: tags:
- deploy - deploy
- name: xserver | remove read-only ssh key for the content repo - name: xserver | remove read-only ssh key for the content repo
file: path={{ xserver_git_identity }} state=absent file: path={{ xserver_git_identity }} state=absent
notify: xserver | restart xserver
tags: tags:
- deploy - deploy
- name: xserver | restart xserver # call supervisorctl update. this reloads
# the supervisorctl config and restarts
# the services if any of the configurations
# have changed.
#
- name: xserver | update supervisor configuration
shell: "{{ supervisor_ctl }} -c {{ supervisor_cfg }} update"
register: supervisor_update
changed_when: supervisor_update.stdout != ""
tags: deploy
- name: xserver | ensure xserver is started
supervisorctl: > supervisorctl: >
name=xserver name=xserver
supervisorctl_path={{ supervisor_ctl }} supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }} config={{ supervisor_cfg }}
state=restarted state=started
tags: tags: deploy
- deploy
...@@ -5,25 +5,29 @@ ...@@ -5,25 +5,29 @@
vars: vars:
migrate_db: "yes" migrate_db: "yes"
openid_workaround: True openid_workaround: True
EDXAPP_LMS_NGINX_PORT: '80'
edx_platform_commit: 'master'
vars_files: vars_files:
- "group_vars/all" - "group_vars/all"
roles: roles:
- gh_users
- common - common
- role: nginx - role: nginx
nginx_sites: nginx_sites:
- lms
- cms - cms
- lms-preview - lms
- xserver - ora
- xqueue - xqueue
- edxlocal - edxlocal
- supervisor - supervisor
- mongo - mongo
- edxapp - edxapp
- demo
- { role: 'rabbitmq', rabbitmq_ip: '127.0.0.1' } - { role: 'rabbitmq', rabbitmq_ip: '127.0.0.1' }
- { role: 'edxapp', celery_worker: True } - { role: 'edxapp', celery_worker: True }
- oraclejdk - oraclejdk
- elasticsearch - elasticsearch
- forum - forum
- { role: "xqueue", update_users: True } - { role: "xqueue", update_users: True }
- xserver - ora
- discern
...@@ -18,7 +18,6 @@ Vagrant.configure("2") do |config| ...@@ -18,7 +18,6 @@ Vagrant.configure("2") do |config|
# point Vagrant at the location of your playbook you want to run # point Vagrant at the location of your playbook you want to run
ansible.playbook = "../../playbooks/vagrant-fullstack.yml" ansible.playbook = "../../playbooks/vagrant-fullstack.yml"
ansible.inventory_path = "../../playbooks/vagrant/inventory.ini" ansible.inventory_path = "../../playbooks/vagrant/inventory.ini"
ansible.extra_vars = { XSERVER_GRADER_CHECKOUT: 'False' }
ansible.verbose = "extra" ansible.verbose = "extra"
end end
end end
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