Commit 9f636859 by Calen Pennington

Initial role creation from template for course_discovery service

parent 51db66a2
# To build this Dockerfile:
#
# From the root of configuration:
#
# docker build -f docker/build/course_discovery/Dockerfile .
#
# This allows the dockerfile to update /edx/app/edx_ansible/edx_ansible
# with the currently checked-out configuration repo.
FROM edxops/trusty-common
MAINTAINER edxops
ARG COURSE_DISCOVERY_VERSION=master
ARG REPO_OWNER=edx
ADD . /edx/app/edx_ansible/edx_ansible
USER docker
WORKDIR /edx/app/edx_ansible/edx_ansible/docker/plays
COPY docker/build/course_discovery/ansible_overrides.yml /
RUN sudo ansible-playbook course_discovery.yml -c local \
-t 'install:base,install:code,install:system-requirements,install:app-requirements,install:configuration,install:vhosts,install:devstack' \
--extra-vars="@/ansible_overrides.yml" \
--extra-vars="COURSE_DISCOVERY_VERSION=$COURSE_DISCOVERY_VERSION" \
--extra-vars="COMMON_GIT_PATH=$REPO_OWNER"
USER root
CMD ["/edx/app/supervisor/venvs/supervisor/bin/supervisord", "-n", "--configuration", "/edx/app/supervisor/supervisord.conf"]
---
course_discovery_gunicorn_host: 0.0.0.0
\ No newline at end of file
- name: Deploy Course Discovery
hosts: all
sudo: True
gather_facts: True
vars:
serial_count: 1
serial: "{{ serial_count }}"
roles:
- docker
- nginx
- role: course_discovery
nginx_default_sites:
- course_discovery
\ No newline at end of file
- name: Deploy edX Course Discovery Service
hosts: all
sudo: True
gather_facts: True
vars:
ENABLE_DATADOG: False
ENABLE_SPLUNKFORWARDER: False
ENABLE_NEWRELIC: False
CLUSTER_NAME: 'course-discovery'
roles:
- role: nginx
nginx_default_sites:
- course-discovery
- aws
- course_discovery
- role: datadog
when: COMMON_ENABLE_DATADOG
- role: splunkforwarder
when: COMMON_ENABLE_SPLUNKFORWARDER
- role: newrelic
when: COMMON_ENABLE_NEWRELIC
......@@ -40,6 +40,7 @@
- analytics_api
- ecommerce
- programs
- course_discovery
- oauth_client_setup
- role: datadog
when: COMMON_ENABLE_DATADOG
......
---
#
# 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
#
##
# Defaults for role course_discovery
#
COURSE_DISCOVERY_GIT_IDENTITY: !!null
# depends upon Newrelic being enabled via COMMON_ENABLE_NEWRELIC
# and a key being provided via NEWRELIC_LICENSE_KEY
COURSE_DISCOVERY_NEWRELIC_APPNAME: "{{ COMMON_ENVIRONMENT }}-{{ COMMON_DEPLOYMENT }}-{{ course_discovery_service_name }}"
COURSE_DISCOVERY_PIP_EXTRA_ARGS: "-i {{ COMMON_PYPI_MIRROR_URL }}"
COURSE_DISCOVERY_NGINX_PORT: 18381
COURSE_DISCOVERY_SSL_NGINX_PORT: 48381
COURSE_DISCOVERY_DEFAULT_DB_NAME: 'course_discovery'
COURSE_DISCOVERY_MYSQL: 'db'
# MySQL usernames are limited to 16 characters
COURSE_DISCOVERY_MYSQL_USER: 'course_discov001'
COURSE_DISCOVERY_MYSQL_PASSWORD: 'password'
COURSE_DISCOVERY_DATABASES:
# rw user
default:
ENGINE: 'django.db.backends.mysql'
NAME: '{{ COURSE_DISCOVERY_DEFAULT_DB_NAME }}'
USER: '{{ COURSE_DISCOVERY_MYSQL_USER }}'
PASSWORD: '{{ COURSE_DISCOVERY_MYSQL_PASSWORD }}'
HOST: '{{ COURSE_DISCOVERY_MYSQL }}'
PORT: '3306'
ATOMIC_REQUESTS: true
CONN_MAX_AGE: 60
COURSE_DISCOVERY_DB_ADMIN_USER: 'root'
COURSE_DISCOVERY_DB_ADMIN_PASSWORD: ''
COURSE_DISCOVERY_MEMCACHE: [ 'memcache' ]
COURSE_DISCOVERY_CACHES:
default:
BACKEND: 'django.core.cache.backends.memcached.MemcachedCache'
KEY_PREFIX: 'default'
LOCATION: '{{ COURSE_DISCOVERY_MEMCACHE }}'
COURSE_DISCOVERY_VERSION: "master"
COURSE_DISCOVERY_DJANGO_SETTINGS_MODULE: "course_discovery.settings.production"
COURSE_DISCOVERY_URL_ROOT: 'http://course_discovery:18381'
COURSE_DISCOVERY_OAUTH_URL_ROOT: 'http://127.0.0.1:8000'
COURSE_DISCOVERY_SECRET_KEY: 'Your secret key here'
COURSE_DISCOVERY_TIME_ZONE: 'UTC'
COURSE_DISCOVERY_LANGUAGE_CODE: 'en-us'
# Used to automatically configure OAuth2 Client
COURSE_DISCOVERY_SOCIAL_AUTH_EDX_OIDC_KEY : 'course_discovery-key'
COURSE_DISCOVERY_SOCIAL_AUTH_EDX_OIDC_SECRET : 'course_discovery-secret'
COURSE_DISCOVERY_SOCIAL_AUTH_REDIRECT_IS_HTTPS: false
COURSE_DISCOVERY_PLATFORM_NAME: 'Your Platform Name Here'
COURSE_DISCOVERY_SERVICE_CONFIG:
SECRET_KEY: '{{ COURSE_DISCOVERY_SECRET_KEY }}'
TIME_ZONE: '{{ COURSE_DISCOVERY_TIME_ZONE }}'
LANGUAGE_CODE: '{{ COURSE_DISCOVERY_LANGUAGE_CODE }}'
SOCIAL_AUTH_EDX_OIDC_KEY: '{{ COURSE_DISCOVERY_SOCIAL_AUTH_EDX_OIDC_KEY }}'
SOCIAL_AUTH_EDX_OIDC_SECRET: '{{ COURSE_DISCOVERY_SOCIAL_AUTH_EDX_OIDC_SECRET }}'
SOCIAL_AUTH_EDX_OIDC_ID_TOKEN_DECRYPTION_KEY: '{{ COURSE_DISCOVERY_SOCIAL_AUTH_EDX_OIDC_SECRET }}'
SOCIAL_AUTH_EDX_OIDC_URL_ROOT: '{{ COURSE_DISCOVERY_OAUTH_URL_ROOT }}/oauth2'
SOCIAL_AUTH_REDIRECT_IS_HTTPS: '{{ COURSE_DISCOVERY_SOCIAL_AUTH_REDIRECT_IS_HTTPS }}'
STATIC_ROOT: "{{ COMMON_DATA_DIR }}/{{ course_discovery_service_name }}/staticfiles"
# db config
DATABASE_OPTIONS:
connect_timeout: 10
DATABASES: '{{ COURSE_DISCOVERY_DATABASES }}'
PLATFORM_NAME: '{{ COURSE_DISCOVERY_PLATFORM_NAME }}'
COURSE_DISCOVERY_REPOS:
- PROTOCOL: "{{ COMMON_GIT_PROTOCOL }}"
DOMAIN: "{{ COMMON_GIT_MIRROR }}"
PATH: "{{ COMMON_GIT_PATH }}"
REPO: course-discovery.git
VERSION: "{{ COURSE_DISCOVERY_VERSION }}"
DESTINATION: "{{ course_discovery_code_dir }}"
SSH_KEY: "{{ COURSE_DISCOVERY_GIT_IDENTITY }}"
COURSE_DISCOVERY_GUNICORN_WORKERS: "2"
COURSE_DISCOVERY_GUNICORN_EXTRA: ""
COURSE_DISCOVERY_GUNICORN_EXTRA_CONF: ""
COURSE_DISCOVERY_GUNICORN_WORKER_CLASS: "gevent"
COURSE_DISCOVERY_HOSTNAME: '~^((stage|prod)-)?course-discovery.*'
nginx_course_discovery_gunicorn_hosts:
- 127.0.0.1
#
# vars are namespace with the module name.
#
course_discovery_role_name: course_discovery
course_discovery_venv_dir: "{{ course_discovery_home }}/venvs/{{ course_discovery_service_name }}"
course_discovery_environment:
DJANGO_SETTINGS_MODULE: "{{ COURSE_DISCOVERY_DJANGO_SETTINGS_MODULE }}"
COURSE_DISCOVERY_CFG: "{{ COMMON_CFG_DIR }}/{{ course_discovery_service_name }}.yml"
PATH: "{{ course_discovery_venv_dir }}/bin:${PATH}"
course_discovery_service_name: "course_discovery"
course_discovery_user: "{{ course_discovery_service_name }}"
course_discovery_home: "{{ COMMON_APP_DIR }}/{{ course_discovery_service_name }}"
course_discovery_code_dir: "{{ course_discovery_home }}/{{ course_discovery_service_name }}"
course_discovery_gunicorn_host: "127.0.0.1"
course_discovery_gunicorn_port: 8381
course_discovery_gunicorn_timeout: 300
course_discovery_log_dir: "{{ COMMON_LOG_DIR }}/{{ course_discovery_service_name }}"
course_discovery_requirements_base: "{{ course_discovery_code_dir }}/requirements"
course_discovery_requirements:
- production.txt
- optional.txt
#
# OS packages
#
course_discovery_debian_pkgs:
- libmysqlclient-dev
- libssl-dev
course_discovery_redhat_pkgs: []
---
#
# 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
#
##
# Role includes for role course_discovery
#
# Example:
#
# dependencies:
# - {
# role: my_role
# my_role_var0: "foo"
# my_role_var1: "bar"
# }
dependencies:
- role: edx_service
edx_service_name: "{{ course_discovery_service_name }}"
edx_service_config: "{{ COURSE_DISCOVERY_SERVICE_CONFIG }}"
edx_service_repos: "{{ COURSE_DISCOVERY_REPOS }}"
edx_service_user: "{{ course_discovery_user }}"
edx_service_home: "{{ course_discovery_home }}"
edx_service_packages:
debian: "{{ course_discovery_debian_pkgs }}"
redhat: "{{ course_discovery_redhat_pkgs }}"
- supervisor
---
#
# 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
#
#
#
# Tasks for role course_discovery
#
# Overview:
#
#
# Dependencies:
#
#
# Example play:
#
#
- name: add gunicorn configuration file
template:
src: edx/app/course_discovery/course_discovery_gunicorn.py.j2
dest: "{{ course_discovery_home }}/course_discovery_gunicorn.py"
sudo_user: "{{ course_discovery_user }}"
tags:
- install:configuration
- name: install application requirements
shell: >
chdir=/edx/app/course_discovery/course_discovery
. {{ course_discovery_venv_dir }}/bin/activate;
make requirements
sudo_user: "{{ course_discovery_user }}"
tags:
- install
- install:app-requirements
- name: install development requirements
shell: >
chdir=/edx/app/course_discovery/course_discovery
. {{ course_discovery_venv_dir }}/bin/activate;
make local-requirements
sudo_user: "{{ course_discovery_user }}"
tags:
- install
- install:devstack
- name: wait for database
wait_for:
host: "{{ COURSE_DISCOVERY_DATABASES.default.HOST }}"
port: "{{ COURSE_DISCOVERY_DATABASES.default.PORT }}"
delay: 2
tags:
- migrate:devstack
- name: create databases
mysql_db:
login_host: "{{ COURSE_DISCOVERY_DATABASES.default.HOST }}"
login_user: "{{ COURSE_DISCOVERY_DB_ADMIN.default.USER }}"
login_password: "{{ COURSE_DISCOVERY_DB_ADMIN.default.PASSWORD }}"
db: "{{ COURSE_DISCOVERY_DEFAULT_DB_NAME }}"
state: present
encoding: utf8
tags:
- migrate:devstack
- name: create database users
mysql_user:
login_host: "{{ COURSE_DISCOVERY_DATABASES.default.HOST }}"
login_user: "{{ COURSE_DISCOVERY_DB_ADMIN.default.USER }}"
login_password: "{{ COURSE_DISCOVERY_DB_ADMIN.default.PASSWORD }}"
name: "{{ item.name }}"
host: "%"
name: "{{ item.password }}"
priv: "{{ COURSE_DISCOVERY_DEFAULT_DB_NAME }}.*:ALL"
with_items:
- name: "{{ COURSE_DISCOVERY_DATABASES.default.USER }}"
password: "{{ COURSE_DISCOVERY_DATABASES.default.PASSWORD }}"
- name: "{{ COMMON_MYSQL_MIGRATE_USER }}"
password: "{{ COMMON_MYSQL_MIGRATE_PASS }}"
tags:
- migrate:devstack
- name: migrate
shell: >
chdir={{ course_discovery_code_dir }}
DB_MIGRATION_USER={{ COMMON_MYSQL_MIGRATE_USER }}
DB_MIGRATION_PASS={{ COMMON_MYSQL_MIGRATE_PASS }}
{{ course_discovery_venv_dir }}/bin/python ./manage.py migrate --noinput
sudo_user: "{{ course_discovery_user }}"
environment: "{{ course_discovery_environment }}"
when: migrate_db is defined and migrate_db|lower == "yes"
tags:
- migrate
- migrate:db
- migrate:devstack
- name: write out the supervisor wrapper
template:
src: "edx/app/course_discovery/course_discovery.sh.j2"
dest: "{{ course_discovery_home }}/{{ course_discovery_service_name }}.sh"
mode: 0650
owner: "{{ supervisor_user }}"
group: "{{ common_web_user }}"
tags:
- install
- install:configuration
- name: write supervisord config
template:
src: "edx/app/supervisor/conf.d.available/course_discovery.conf.j2"
dest: "{{ supervisor_available_dir }}/{{ course_discovery_service_name }}.conf"
owner: "{{ supervisor_user }}"
group: "{{ common_web_user }}"
mode: 0644
tags:
- install
- install:configuration
- name: write devstack script
template:
src: "edx/app/course_discovery/devstack.sh.j2"
dest: "{{ course_discovery_home }}/devstack.sh"
owner: "{{ supervisor_user }}"
group: "{{ common_web_user }}"
mode: 0744
tags:
- install:devstack
- name: setup the course_discovery env file
template:
src: "./{{ course_discovery_home }}/{{ course_discovery_service_name }}_env.j2"
dest: "{{ course_discovery_home }}/course_discovery_env"
owner: "{{ course_discovery_user }}"
group: "{{ course_discovery_user }}"
mode: 0644
tags:
- install
- install:configuration
- name: enable supervisor script
file:
src: "{{ supervisor_available_dir }}/{{ course_discovery_service_name }}.conf"
dest: "{{ supervisor_cfg_dir }}/{{ course_discovery_service_name }}.conf"
state: link
force: yes
when: not disable_edx_services
tags:
- install
- install:configuration
- name: update supervisor configuration
shell: "{{ supervisor_ctl }} -c {{ supervisor_cfg }} update"
when: not disable_edx_services
tags:
- manage
- manage:start
- name: create symlinks from the venv bin dir
file:
src: "{{ course_discovery_venv_dir }}/bin/{{ item }}"
dest: "{{ COMMON_BIN_DIR }}/{{ item.split('.')[0] }}.course_discovery"
state: link
with_items:
- python
- pip
- django-admin.py
tags:
- install
- install:app-requirements
- name: create symlinks from the repo dir
file:
src: "{{ course_discovery_code_dir }}/{{ item }}"
dest: "{{ COMMON_BIN_DIR }}/{{ item.split('.')[0] }}.course_discovery"
state: link
with_items:
- manage.py
tags:
- install
- install:app-requirements
- name: restart the application
supervisorctl:
state: restarted
supervisorctl_path: "{{ supervisor_ctl }}"
config: "{{ supervisor_cfg }}"
name: "{{ course_discovery_service_name }}"
when: not disable_edx_services
sudo_user: "{{ supervisor_service_user }}"
tags:
- manage
- manage:start
- name: Copying nginx configs for course_discovery
template: >
src=edx/app/nginx/sites-available/course_discovery.j2
dest={{ nginx_sites_available_dir }}/course_discovery
owner=root group={{ common_web_user }} mode=0640
notify: reload nginx
tags:
- install:vhosts
- name: Creating nginx config links for course_discovery
file: >
src={{ nginx_sites_available_dir }}/course_discovery
dest={{ nginx_sites_enabled_dir }}/course_discovery
state=link owner=root group=root
notify: reload nginx
tags:
- install:vhosts
#!/usr/bin/env bash
# {{ ansible_managed }}
{% set course_discovery_venv_bin = course_discovery_home + "/venvs/" + course_discovery_service_name + "/bin" %}
{% if COMMON_ENABLE_NEWRELIC_APP %}
{% set executable = course_discovery_venv_bin + '/newrelic-admin run-program ' + course_discovery_venv_bin + '/gunicorn' %}
{% else %}
{% set executable = course_discovery_venv_bin + '/gunicorn' %}
{% endif %}
{% if COMMON_ENABLE_NEWRELIC_APP %}
export NEW_RELIC_APP_NAME="{{ COURSE_DISCOVERY_NEWRELIC_APPNAME }}"
export NEW_RELIC_LICENSE_KEY="{{ NEWRELIC_LICENSE_KEY }}"
{% endif -%}
source {{ course_discovery_home }}/course_discovery_env
{{ executable }} -c {{ course_discovery_home }}/course_discovery_gunicorn.py {{ COURSE_DISCOVERY_GUNICORN_EXTRA }} course_discovery.wsgi:application
# {{ ansible_managed }}
{% for name,value in course_discovery_environment.items() -%}
{%- if value -%}
export {{ name }}="{{ value }}"
{% endif %}
{%- endfor %}
"""
gunicorn configuration file: http://docs.gunicorn.org/en/develop/configure.html
{{ ansible_managed }}
"""
timeout = {{ course_discovery_gunicorn_timeout }}
bind = "{{ course_discovery_gunicorn_host }}:{{ course_discovery_gunicorn_port }}"
pythonpath = "{{ course_discovery_code_dir }}"
workers = {{ COURSE_DISCOVERY_GUNICORN_WORKERS }}
worker_class = "{{ COURSE_DISCOVERY_GUNICORN_WORKER_CLASS }}"
{{ COURSE_DISCOVERY_GUNICORN_EXTRA_CONF }}
#!/usr/bin/env bash
# {{ ansible_managed }}
cd /edx/app/edx_ansible/edx_ansible/docker/plays
sudo ansible-playbook course_discovery.yml -c local -t 'install:app-requirements'
sudo ansible-playbook course_discovery.yml -c local -t 'migrate:devstack' \
--extra-vars="migrate_db=yes"
sudo ansible-playbook course_discovery.yml -c local -t 'manage:devstack'
COMMAND=$1
case $COMMAND in
start)
{% set course_discovery_venv_bin = course_discovery_home + "/venvs/" + course_discovery_service_name + "/bin" %}
{% set executable = course_discovery_venv_bin + '/gunicorn' %}
{{ executable }} -c {{ course_discovery_home }}/course_discovery_gunicorn.py \
{{ COURSE_DISCOVERY_GUNICORN_EXTRA }} \
--reload \
course_discovery.wsgi:application
;;
open)
cd {{ course_discovery_home }}
. {{ course_discovery_venv_bin }}/activate
/bin/bash
;;
esac
#
# {{ ansible_managed }}
#
{% if nginx_default_sites is defined and "course_discovery" in nginx_default_sites %}
{% set default_site = "default" %}
{% else %}
{% set default_site = "" %}
{% endif %}
upstream course_discovery_app_server {
{% for host in nginx_course_discovery_gunicorn_hosts %}
server {{ host }}:{{ course_discovery_gunicorn_port }} fail_timeout=0;
{% endfor %}
}
server {
server_name {{ COURSE_DISCOVERY_HOSTNAME }};
{% if NGINX_ENABLE_SSL %}
listen {{ COURSE_DISCOVERY_NGINX_PORT }} {{ default_site }};
listen {{ COURSE_DISCOVERY_SSL_NGINX_PORT }} ssl;
ssl_certificate /etc/ssl/certs/{{ NGINX_SSL_CERTIFICATE|basename }};
ssl_certificate_key /etc/ssl/private/{{ NGINX_SSL_KEY|basename }};
# request the browser to use SSL for all connections
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
{% else %}
listen {{ COURSE_DISCOVERY_NGINX_PORT }} {{ default_site }};
{% endif %}
location ~ ^/static/(?P<file>.*) {
root {{ COMMON_DATA_DIR }}/{{ course_discovery_service_name }};
try_files /staticfiles/$file =404;
}
location / {
try_files $uri @proxy_to_app;
}
{% if NGINX_ROBOT_RULES|length > 0 %}
location /robots.txt {
root {{ nginx_app_dir }};
try_files $uri /robots.txt =404;
}
{% endif %}
location @proxy_to_app {
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
proxy_set_header X-Forwarded-Port $http_x_forwarded_port;
proxy_set_header X-Forwarded-For $http_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://course_discovery_app_server;
}
# Forward to HTTPS if we're an HTTP request...
if ($http_x_forwarded_proto = "http") {
set $do_redirect "true";
}
# Run our actual redirect...
if ($do_redirect = "true") {
rewrite ^ https://$host$request_uri? permanent;
}
}
#
# {{ ansible_managed }}
#
[program:{{ course_discovery_service_name }}]
command={{ course_discovery_home }}/{{ course_discovery_service_name }}.sh
user={{ common_web_user }}
directory={{ course_discovery_code_dir }}
stdout_logfile={{ supervisor_log_dir }}/%(program_name)s-stdout.log
stderr_logfile={{ supervisor_log_dir }}/%(program_name)s-stderr.log
killasgroup=true
stopasgroup=true
......@@ -78,7 +78,7 @@
value: "{{ item[0].public_dns_name }}"
with_nested:
- ec2.instances
- ['studio', 'ecommerce', 'preview', 'programs']
- ['studio', 'ecommerce', 'preview', 'programs', 'course-discovery']
- name: Add new instance to host group
......
......@@ -14,3 +14,6 @@ awscli==1.4.2
requests
# Needed for the mongo_status module(playbooks/library/mongo_status)
pymongo==3.1
# Needed for the mysql_db module
MySQL-python==1.2.5
......@@ -169,6 +169,10 @@ PROGRAMS_NGINX_PORT: 80
PROGRAMS_SSL_NGINX_PORT: 443
PROGRAMS_VERSION: $programs_version
COURSE_DISCOVERY_NGINX_PORT: 80
COURSE_DISCOVERY_SSL_NGINX_PORT: 443
COURSE_DISCOVERY_VERSION: $course_discovery_version
NGINX_SET_X_FORWARDED_HEADERS: True
EDX_ANSIBLE_DUMP_VARS: true
migrate_db: "yes"
......@@ -248,6 +252,10 @@ ECOMMERCE_SOCIAL_AUTH_REDIRECT_IS_HTTPS: true
PROGRAMS_LMS_URL_ROOT: "https://${deploy_host}"
PROGRAMS_URL_ROOT: "https://programs-${deploy_host}"
PROGRAMS_SOCIAL_AUTH_REDIRECT_IS_HTTPS: true
COURSE_DISCOVERY_OAUTH_URL_ROOT: "https://${deploy_host}"
COURSE_DISCOVERY_URL_ROOT: "https://course-discovery-${deploy_host}"
COURSE_DISCOVERY_SOCIAL_AUTH_REDIRECT_IS_HTTPS: true
EOF
fi
......@@ -292,7 +300,7 @@ EOF
fi
declare -A deploy
roles="edxapp forum ecommerce programs notifier xqueue xserver ora discern certs demo testcourses"
roles="edxapp forum ecommerce programs course_discovery notifier xqueue xserver ora discern certs demo testcourses"
for role in $roles; do
deploy[$role]=${!role}
done
......
......@@ -360,8 +360,8 @@ fi
extra_args_opts+=" -e@$extra_vars"
ansible-playbook -vvvv -c local -i "localhost," $play.yml $extra_args_opts
ansible-playbook -vvvv -c local -i "localhost," stop_all_edx_services.yml $extra_args_opts
ansible-playbook -vvvv -c local -i "localhost," --skip-tags="install:devstack,migrate:devstack" $play.yml $extra_args_opts
ansible-playbook -vvvv -c local -i "localhost," --skip-tags="install:devstack,migrate:devstack" stop_all_edx_services.yml $extra_args_opts
rm -rf $base_dir
......
......@@ -47,7 +47,6 @@ MOUNT_DIRS = {
:ecommerce => {:repo => "ecommerce", :local => "/edx/app/ecommerce/ecommerce", :owner => "ecommerce"},
:ecommerce_worker => {:repo => "ecommerce-worker", :local => "/edx/app/ecommerce_worker/ecommerce_worker", :owner => "ecommerce_worker"},
:programs => {:repo => "programs", :local => "/edx/app/programs/programs", :owner => "programs"},
:course_discovery => {:repo => "course-discovery", :local => "/edx/app/course-discovery/course-discovery", :owner => "course-discovery"},
:insights => {:repo => "insights", :local => "/edx/app/insights/edx_analytics_dashboard", :owner => "insights"},
:analytics_api => {:repo => "analytics_api", :local => "/edx/app/analytics_api/analytics_api", :owner => "analytics_api"},
# This src directory won't have useful permissions. You can set them from the
......
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