Commit c5d07f35 by John Jarvis

creates supervisor config in main.yml and calls update to restart

services if it changes
deploy tasks no longer stop the service and will notify the restart
if any task changes
parent d9227fc4
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
# 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 }}
......
--- ---
- 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 }} group={{ common_web_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,16 @@ ...@@ -46,21 +42,16 @@
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 }}"
tags: deploy notify: certs | restart certs
- name: certs | restart the certificate service
supervisorctl: >
name=certs
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=restarted
tags: deploy tags: deploy
...@@ -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,20 @@ ...@@ -79,6 +84,20 @@
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
# call supervisorctl update. this reloads
# the supervisorctl config and restarts
# the services if any of the configurations
# have changed.
#
# 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: certs | update supervisor configuration
shell: "{{ supervisor_ctl }} -c {{ supervisor_cfg }} update"
register: supervisor_update
changed_when: supervisor_update.stdout != ""
...@@ -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
......
...@@ -18,11 +18,3 @@ ...@@ -18,11 +18,3 @@
config={{ devpi_supervisor_cfg }} config={{ devpi_supervisor_cfg }}
name=devpi-server name=devpi-server
sudo_user: "{{ devpi_supervisor_user }}" sudo_user: "{{ devpi_supervisor_user }}"
- 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,10 @@ ...@@ -92,7 +95,10 @@
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 - name: devpi | ensure devpi is started
# is restarted since downstream roles supervisorctl: >
# will need to use it state=started
- meta: flush_handlers supervisorctl_path={{ devpi_supervisor_ctl }}
config={{ devpi_supervisor_cfg }}
name=devpi-server
sudo_user: "{{ devpi_supervisor_user }}"
--- ---
- 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
template: >
src={{ item }}.conf.j2 dest={{ supervisor_cfg_dir }}/{{ item }}.conf
owner={{ supervisor_user }} group={{ common_web_user }} mode=0644
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
...@@ -85,6 +41,9 @@ ...@@ -85,6 +41,9 @@
- 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_celery
- 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 +53,9 @@ ...@@ -94,6 +53,9 @@
- 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_celery
- 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 +65,9 @@ ...@@ -103,6 +65,9 @@
- 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_celery
- discern | restart discern
tags: tags:
- deploy - deploy
...@@ -111,6 +76,9 @@ ...@@ -111,6 +76,9 @@
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_celery
- discern | restart discern
tags: tags:
- deploy - deploy
...@@ -121,6 +89,9 @@ ...@@ -121,6 +89,9 @@
{{ 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_celery
- discern | restart discern
with_items: with_items:
- syncdb - syncdb
- migrate - migrate
...@@ -133,5 +104,8 @@ ...@@ -133,5 +104,8 @@
{{ 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_celery
- discern | restart discern
tags: tags:
- deploy - deploy
...@@ -5,6 +5,9 @@ ...@@ -5,6 +5,9 @@
home="{{ discern_app_dir }}" home="{{ discern_app_dir }}"
createhome=no createhome=no
shell=/bin/false shell=/bin/false
notify:
- discern | restart discern_celery
- 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 +15,9 @@ ...@@ -12,6 +15,9 @@
state=directory state=directory
owner="{{ discern_user }}" owner="{{ discern_user }}"
group="{{ common_web_group }}" group="{{ common_web_group }}"
notify:
- discern | restart discern_celery
- discern | restart discern
with_items: with_items:
- "{{ discern_app_dir }}" - "{{ discern_app_dir }}"
- "{{ discern_venvs_dir }}" - "{{ discern_venvs_dir }}"
...@@ -21,38 +27,60 @@ ...@@ -21,38 +27,60 @@
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_celery
- 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_celery
- 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_celery
- 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_celery
- 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_celery
- discern | restart discern
- name: discern | create supervisor scripts - discern, discern_celery
template: >
src={{ item }}.conf.j2 dest={{ supervisor_cfg_dir }}/{{ item }}.conf
owner={{ supervisor_user }} group={{ common_web_user }} mode=0644
with_items: ['discern', 'discern_celery']
- include: deploy.yml - include: deploy.yml
# call supervisorctl update. this reloads
# the supervisorctl config and restarts
# the services if any of the configurations
# have changed.
#
# 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: discern | update supervisor configuration
shell: "{{ supervisor_ctl }} -c {{ supervisor_cfg }} update"
register: supervisor_update
changed_when: supervisor_update.stdout != ""
- name: discern | create a symlink for venv python - name: discern | create a symlink for venv python
file: > file: >
src="{{ discern_venv_bin }}/python" src="{{ discern_venv_bin }}/python"
......
--- ---
- name: edxapp | start edxapp - name: "edxapp | restart edxapp:lms"
service: name=edxapp state=started supervisorctl: >
tags: state=restarted
- lms supervisorctl_path={{ supervisor_ctl }}
- lms-preview config={{ supervisor_cfg }}
- cms name="edxapp:lms"
- deploy sudo_user: "{{ supervisor_user }}"
- name: "edxapp | restart edxapp:cms"
supervisorctl: >
state=restarted
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
name="edxapp:cms"
sudo_user: "{{ supervisor_user }}"
- name: edxapp | stop edxapp
service: name=edxapp state=stopped
tags:
- lms
- lms-preview
- cms
- deploy
- name: edxapp | restart edxapp
service: name=edxapp state=restarted
tags:
- lms
- lms-preview
- cms
- deploy
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
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:{{ item }}"
tags: tags:
- deploy - deploy
...@@ -12,12 +13,12 @@ ...@@ -12,12 +13,12 @@
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:{{ item }}"
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 +26,6 @@ ...@@ -25,7 +26,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 +35,10 @@ ...@@ -35,21 +35,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 +46,23 @@ ...@@ -57,20 +46,23 @@
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 # call supervisorctl update. this reloads
supervisorctl: > # the supervisorctl config and restarts
name="edxapp_worker" # the services if any of the configurations
supervisorctl_path={{ supervisor_ctl }} # have changed.
config={{ supervisor_cfg }} #
state=present # we don't use notifications for supervisor because
when: celery_worker is defined # they don't work well with parameterized roles.
tags: # See https://github.com/ansible/ansible/issues/4853
- deploy - name: edxapp | update supervisor configuration
shell: "{{ supervisor_ctl }} -c {{ supervisor_cfg }} update"
register: supervisor_update
changed_when: supervisor_update.stdout != ""
# Gather assets using rake if possible # Gather assets using rake if possible
......
...@@ -6,12 +6,14 @@ ...@@ -6,12 +6,14 @@
dest={{ forum_supervisor_wrapper }} dest={{ forum_supervisor_wrapper }}
mode=0755 mode=0755
sudo_user: "{{ forum_user }}" sudo_user: "{{ forum_user }}"
notify: forum | restart the forum service
tags: tags:
- deploy - 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 }}"
notify: forum | restart the forum service
tags: tags:
- deploy - deploy
...@@ -22,6 +24,7 @@ ...@@ -22,6 +24,7 @@
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 }}"
notify: forum | restart the forum service
tags: tags:
- deploy - deploy
...@@ -31,14 +34,6 @@ ...@@ -31,14 +34,6 @@
owner={{ common_web_user }} group={{ supervisor_user }} owner={{ common_web_user }} group={{ supervisor_user }}
mode=0644 mode=0644
register: forum_supervisor register: forum_supervisor
tags: notify: forum | restart the forum service
- deploy
- name: forum | restart the forum service
supervisorctl: >
name=forum
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=restarted
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: >
...@@ -48,5 +50,19 @@ ...@@ -48,5 +50,19 @@
register: forum_supervisor register: forum_supervisor
- include: deploy.yml - include: deploy.yml
# call supervisorctl update. this reloads
# the supervisorctl config and restarts
# the services if any of the configurations
# have changed.
#
# 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: forum | update supervisor configuration
shell: "{{ supervisor_ctl }} -c {{ supervisor_cfg }} update"
register: supervisor_update
changed_when: supervisor_update.stdout != ""
- include: test.yml - include: test.yml
- name: ora | See if supervisord config file `ora.conf` is installed
shell: "[ -f {{ supervisor_cfg_dir }}/ora.conf ] && echo 'Found' || echo ''"
register: ora_installed
tags:
- deploy
- name: ora | See if supervisord `ora_celery.conf` is installed
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:
- deploy
- include: ease.yml - include: ease.yml
- name: ora | create ora application config - name: ora | create ora application config
...@@ -48,24 +12,6 @@ ...@@ -48,24 +12,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 }}
......
...@@ -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,18 +26,38 @@ ...@@ -20,18 +26,38 @@
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
- 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
notify:
- ora | restart ora
- ora | restart ora_celery
with_items: ['ora', 'ora_celery']
tags:
- deploy
- include: deploy.yml - include: deploy.yml
- name: ora | create a symlink for venv python - name: ora | create a symlink for venv python
...@@ -41,3 +67,16 @@ ...@@ -41,3 +67,16 @@
with_items: with_items:
- python - python
- pip - pip
# call supervisorctl update. this reloads
# the supervisorctl config and restarts
# the services if any of the configurations
# have changed.
#
# 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: ora | update supervisor configuration
shell: "{{ supervisor_ctl }} -c {{ supervisor_cfg }} update"
register: supervisor_update
changed_when: supervisor_update.stdout != ""
- 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 consumer service
supervisorctl: >
name=xqueue_consumer
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=stopped
tags:
- 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
- xqueue | restart xqueue consumer
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
- xqueue | restart xqueue consumer
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
- xqueue | restart xqueue consumer
tags: tags:
- deploy - deploy
...@@ -49,6 +31,9 @@ ...@@ -49,6 +31,9 @@
- 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
- xqueue | restart xqueue consumer
tags: tags:
- deploy - deploy
...@@ -56,6 +41,9 @@ ...@@ -56,6 +41,9 @@
- 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
- xqueue | restart xqueue consumer
tags: tags:
- deploy - deploy
...@@ -64,6 +52,9 @@ ...@@ -64,6 +52,9 @@
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
- xqueue | restart xqueue consumer
tags: tags:
- deploy - deploy
...@@ -71,23 +62,8 @@ ...@@ -71,23 +62,8 @@
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 }}"
tags: notify:
- deploy - xqueue | restart xqueue
- xqueue | restart xqueue consumer
- name: xqueue | restart xqueue
supervisorctl: >
name=xqueue
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=restarted
tags:
- deploy
- name: xqueue | restart xqueue consumer
supervisorctl: >
name=xqueue_consumer
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=restarted
tags: tags:
- deploy - deploy
...@@ -40,8 +40,29 @@ ...@@ -40,8 +40,29 @@
encoding=utf8 encoding=utf8
when: xqueue_create_db is defined and xqueue_create_db|lower == "yes" when: xqueue_create_db is defined and xqueue_create_db|lower == "yes"
- 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
- include: deploy.yml - include: deploy.yml
# call supervisorctl update. this reloads
# the supervisorctl config and restarts
# the services if any of the configurations
# have changed.
#
# 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: xqueue | update supervisor configuration
shell: "{{ supervisor_ctl }} -c {{ supervisor_cfg }} update"
register: supervisor_update
changed_when: supervisor_update.stdout != ""
- name: xqueue | create a symlink for venv python - name: xqueue | create a symlink for venv python
file: > file: >
src="{{ xqueue_venv_bin }}/{{ item }}" src="{{ xqueue_venv_bin }}/{{ item }}"
...@@ -50,3 +71,6 @@ ...@@ -50,3 +71,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
- name: xserver | checkout code - name: xserver | checkout code
git: dest={{xserver_code_dir}} repo={{xserver_source_repo}} version={{xserver_version}} git: dest={{xserver_code_dir}} repo={{xserver_source_repo}} version={{xserver_version}}
sudo_user: "{{ xserver_user }}" sudo_user: "{{ xserver_user }}"
tags: notify: xserver | restart xserver
- deploy
- name: "xserver | writing supervisor script"
template: >
src=xserver.conf.j2 dest={{ supervisor_cfg_dir }}/xserver.conf
owner={{ supervisor_user }} group={{ common_web_user }} mode=0644
tags: tags:
- deploy - 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 +30,7 @@ ...@@ -33,6 +30,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 +38,7 @@ ...@@ -40,6 +38,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 +46,13 @@ ...@@ -47,20 +46,13 @@
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
tags: notify: xserver | restart xserver
- deploy
- name: xserver | restart xserver
supervisorctl: >
name=xserver
supervisorctl_path={{ supervisor_ctl }}
config={{ supervisor_cfg }}
state=restarted
tags: tags:
- deploy - deploy
...@@ -62,6 +62,14 @@ ...@@ -62,6 +62,14 @@
- "{{ secure_dir }}/files/edx_apparmor_sandbox.j2" - "{{ secure_dir }}/files/edx_apparmor_sandbox.j2"
- "usr.bin.python-sandbox.j2" - "usr.bin.python-sandbox.j2"
- name: "xserver | writing supervisor script"
template: >
src=xserver.conf.j2 dest={{ supervisor_cfg_dir }}/xserver.conf
owner={{ supervisor_user }} group={{ common_web_user }} mode=0644
tags:
- deploy
- include: deploy.yml - include: deploy.yml
- name: xserver | enforce app-armor rules - name: xserver | enforce app-armor rules
...@@ -76,3 +84,15 @@ ...@@ -76,3 +84,15 @@
- python - python
- pip - pip
# call supervisorctl update. this reloads
# the supervisorctl config and restarts
# the services if any of the configurations
# have changed.
#
# 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: xserver | update supervisor configuration
shell: "{{ supervisor_ctl }} -c {{ supervisor_cfg }} update"
register: supervisor_update
changed_when: supervisor_update.stdout != ""
...@@ -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