Skip to content

Instantly share code, notes, and snippets.

@singingwolfboy
Created August 3, 2015 20:32
Show Gist options
  • Save singingwolfboy/d8a1c3137446b173feef to your computer and use it in GitHub Desktop.
Save singingwolfboy/d8a1c3137446b173feef to your computer and use it in GitHub Desktop.
% cd devstack-test
[db@mastodon:~/devstack-test]
% vagrant provision
==> default: Running provisioner: shell...
default: Running: inline script
==> default: stdin: is not a tty
==> default:
==> default: PLAY [Configure instance(s)] **************************************************
==> default:
==> default: GATHERING FACTS ***************************************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [user | debug var=user_info] ********************************************
==> default: ok: [localhost] => {
==> default: "var": {
==> default: "user_info": []
==> default: }
==> default: }
==> default:
==> default: TASK: [user | create the edxadmin group] **************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [user | ensure sudoers.d is read] ***************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [user | grant full sudo access to the edxadmin group] *******************
==> default: ok: [localhost]
==> default:
==> default: TASK: [user | create the users] ***********************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [user | create .ssh directory] ******************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [user | assign admin role to admin users] *******************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [user | get github key[s]] **********************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [user | update the authorized_keys file] ********************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [user | create bashrc file for normal users] ****************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [user | create .profile for all users] **********************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [user | modify shell for restricted users] ******************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [user | create bashrc file for restricted users] ************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [user | create sudoers file from template] ******************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [user | change home directory ownership to root for restricted users] ***
==> default: skipping: [localhost]
==> default:
==> default: TASK: [user | create ~/bin directory] *****************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [user | create allowed command links] ***********************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [security | install security packages] **********************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [security | update all system packages] *********************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [security | configure periodic unattended-upgrades] *********************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [security | disable unattended-upgrades] ********************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [security | only unattended-upgrade from security repo] *****************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [security | disable security only updates on unattended-upgrades] *******
==> default: skipping: [localhost]
==> default:
==> default: TASK: [security | Check if we are vulnerable] *********************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [security | Apply bash security update if we are vulnerable] ************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [security | Check again and fail if we are still vulnerable] ************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [security | GHOST.c] ****************************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [security | compile GHOST] **********************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [security | Check if we are vulnerable] *********************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [security | Apply glibc security update if we are vulnerable] ***********
==> default: skipping: [localhost]
==> default:
==> default: TASK: [common | Update CA Certificates] ***************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [common | Add user www-data] ********************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [common | Create common directories] ************************************
==> default: ok: [localhost] => (item=/edx/var)
==> default: ok: [localhost] => (item=/edx/app)
==> default: ok: [localhost] => (item=/edx/bin)
==> default: ok: [localhost] => (item=/edx/etc)
==> default:
==> default: TASK: [common | check if instance is vagrant] *********************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [common | Add git apt repository] ***************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [common | Install role-independent useful system packages] **************
==> default: ok: [localhost]
==> default:
==> default: TASK: [common | Create common log directory] **********************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [common | upload sudo config for key forwarding as root] ****************
==> default: ok: [localhost]
==> default:
==> default: TASK: [common | pip install virtualenv] ***************************************
==> default: ok: [localhost] => (item=pip==1.5.6)
==> default: ok: [localhost] => (item=setuptools==3.6)
==> default: ok: [localhost] => (item=virtualenv==1.11.6)
==> default: ok: [localhost] => (item=virtualenvwrapper)
==> default:
==> default: TASK: [common | Install rsyslog configuration for edX] ************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [common | Remove the default rsyslog configuration] *********************
==> default: ok: [localhost]
==> default:
==> default: TASK: [common | Create hourly subdirectory in logrotate.d] ********************
==> default: ok: [localhost]
==> default:
==> default: TASK: [common | Install logrotate configuration for edX] **********************
==> default: ok: [localhost]
==> default:
==> default: TASK: [common | Install logrotate configuration for tracking file] ************
==> default: ok: [localhost]
==> default:
==> default: TASK: [common | Add logrotate for tracking.log to cron.hourly] ****************
==> default: ok: [localhost]
==> default:
==> default: TASK: [common | update /etc/hosts] ********************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [common | update /etc/hostname] *****************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [common | run hostname] *************************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [common | update /etc/dhcp/dhclient.conf] *******************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [common | add ssh-warning banner motd] **********************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [common | update ssh config] ********************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [aws | gather ec2 facts for use in other roles] *************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [aws | shell /sbin/ifconfig eth0 mtu 1500 up
==> default: ] **************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [aws | lineinfile dest=/etc/dhcp/dhclient.conf regexp="^supercede interfact-mtu" line="supercede interface-mtu 1500;" insertbefore="^request"
==> default: ] ***
==> default: changed: [localhost]
==> default:
==> default: TASK: [aws | create all service directories] **********************************
==> default: ok: [localhost] => (item={'key': 'home', 'value': {'owner': 'root', 'path': u'/edx/app/aws', 'group': 'root', 'mode': '0755'}})
==> default: ok: [localhost] => (item={'key': 'data', 'value': {'owner': 'root', 'path': u'/edx/var/aws', 'group': 'root', 'mode': '0700'}})
==> default: changed: [localhost] => (item={'key': 'logs', 'value': {'owner': 'syslog', 'path': u'/edx/var/log/aws', 'group': 'syslog', 'mode': '0650'}})
==> default:
==> default: TASK: [aws | install system packages] *****************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [aws | install aws python packages] *************************************
==> default: ok: [localhost] => (item=https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz)
==> default: ok: [localhost] => (item=awscli==1.4.2)
==> default: changed: [localhost] => (item=boto=="2.34.0")
==> default:
==> default: TASK: [aws | get s3cmd] *******************************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [aws | untar s3cmd] *****************************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [aws | create symlink for s3cmd] ****************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [aws | create s3 log sync script] ***************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [aws | create symlink for s3 log sync script] ***************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [aws | force logrotate on supervisor stop] ******************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [aws | cronjob for s3 log sync] *****************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [aws | update the ssh motd on Ubuntu] ***********************************
==> default: skipping: [localhost] => (item=/etc/update-motd.d/10-help-text)
==> default: skipping: [localhost] => (item=/usr/share/landscape/landscape-sysinfo.wrapper)
==> default: skipping: [localhost] => (item=/etc/update-motd.d/51-cloudguest)
==> default: skipping: [localhost] => (item=/etc/update-motd.d/91-release-upgrade)
==> default:
==> default: TASK: [edx_ansible | create application user] *********************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edx_ansible | create edx_ansible app and venv dir] *********************
==> default: ok: [localhost] => (item=/edx/app/edx_ansible)
==> default: ok: [localhost] => (item=/edx/var/edx_ansible)
==> default: ok: [localhost] => (item=/edx/app/edx_ansible/venvs)
==> default:
==> default: TASK: [edx_ansible | install a bunch of system packages on which edx_ansible relies] ***
==> default: ok: [localhost]
==> default:
==> default: TASK: [edx_ansible | git checkout edx_ansible repo into edx_ansible_code_dir] ***
==> default: changed: [localhost]
==> default:
==> default: TASK: [edx_ansible | install edx_ansible venv requirements] *******************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edx_ansible | create update script] ************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edx_ansible | create a symlink for update.sh] **************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edx_ansible | create a symlink for ansible-playbook] *******************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edx_ansible | create a symlink for the playbooks dir] ******************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxlocal | install ppa key] ********************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxlocal | install apt repository] *************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxlocal | look for mysql 5.5] *****************************************
==> default: failed: [localhost] => {"changed": true, "cmd": "dpkg -L mysql-server-5.5", "delta": "0:00:00.020868", "end": "2015-08-03 20:21:01.923262", "rc": 1, "start": "2015-08-03 20:21:01.902394", "warnings": []}
==> default: stderr: Package `mysql-server-5.5' is not installed.
==> default: Use dpkg --info (= dpkg-deb --info) to examine archive files,
==> default: and dpkg --contents (= dpkg-deb --contents) to list their contents.
==> default: ...ignoring
==> default:
==> default: TASK: [edxlocal | stop mysql] *************************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxlocal | remove prior version of mysql] ******************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxlocal | install mysql 56 and dependencies] **************************
==> default: ok: [localhost] => (item=software-properties-common,mysql-server)
==> default:
==> default: TASK: [edxlocal | start mysql] ************************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxlocal | install packages needed for single server] ******************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxlocal | setup the edxapp db user] ***********************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxlocal | create a database for edxapp] *******************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxlocal | setup the xqueue db user] ***********************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxlocal | create a database for xqueue] *******************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxlocal | setup the ora db user] **************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxlocal | create a database for ora] **********************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxlocal | create databases for analytics api] *************************
==> default: ok: [localhost] => (item=analytics-api)
==> default: ok: [localhost] => (item=reports)
==> default:
==> default: TASK: [edxlocal | create database for insights] *******************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxlocal | create database for ecommerce] ******************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxlocal | setup users for ecommerce] **********************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxlocal | create api user for the analytics api] **********************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxlocal | create read-only reports user for the analytics-api] ********
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxlocal | setup the edx-notes-api db user] ****************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxlocal | create a database for edx-notes-api] ************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxlocal | setup the migration db user] ********************************
==> default: ok: [localhost] => (item=edxapp)
==> default: skipping: [localhost] => (item=None)
==> default: ok: [localhost] => (item=ora)
==> default: skipping: [localhost] => (item=None)
==> default: ok: [localhost] => (item=analytics-api)
==> default: ok: [localhost] => (item=reports)
==> default: skipping: [localhost] => (item=None)
==> default: skipping: [localhost] => (item=None)
==> default:
==> default: TASK: [edxlocal | setup the read-only db user] ********************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxlocal | setup the admin db user] ************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxlocal | install memcached] ******************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [mongo | check to see that MongoDB 2.4 is not installed] ****************
==> default: ok: [localhost]
==> default:
==> default: TASK: [mongo | verify 2.4 not installed] **************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [mongo | remove mongo 2.4 if present] ***********************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [mongo | install python pymongo for mongo_user ansible module] **********
==> default: ok: [localhost]
==> default:
==> default: TASK: [mongo | add the mongodb signing key] ***********************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [mongo | add the mongodb repo to the sources list] **********************
==> default: ok: [localhost]
==> default:
==> default: TASK: [mongo | install mongo server and recommends] ***************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [mongo | create mongo dirs] *********************************************
==> default: ok: [localhost] => (item=/edx/var/mongo)
==> default: ok: [localhost] => (item=/edx/var/mongo/mongodb)
==> default: ok: [localhost] => (item=/edx/var/log/mongo)
==> default:
==> default: TASK: [mongo | stop mongod service] *******************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [mongo | move mongodb to {{ mongo_data_dir }}] **************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [mongo | copy mongodb key file] *****************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [mongo | copy configuration template] ***********************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [mongo | start mongo service] *******************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [mongo | wait for mongo server to start] ********************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [mongo | drop super user script] ****************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [mongo | create super user with js] *************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [mongo | delete super user script] **************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [mongo | Create the file to initialize the mongod replica set] **********
==> default: skipping: [localhost]
==> default:
==> default: TASK: [mongo | Initialize the replication set] ********************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [mongo | create a mongodb user] *****************************************
==> default: ok: [localhost] => (item={'password': 'password', 'user': 'cs_comments_service', 'roles': 'readWrite', 'database': 'cs_comments_service'})
==> default: ok: [localhost] => (item={'password': 'password', 'user': 'edxapp', 'roles': 'readWrite', 'database': 'edxapp'})
==> default:
==> default: TASK: [mongo | create a mongodb user] *****************************************
==> default: skipping: [localhost] => (item={'password': 'password', 'user': 'cs_comments_service', 'roles': 'readWrite', 'database': 'cs_comments_service'})
==> default: skipping: [localhost] => (item={'password': 'password', 'user': 'edxapp', 'roles': 'readWrite', 'database': 'edxapp'})
==> default:
==> default: TASK: [mongo | install s3cmd] *************************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [mongo | configure s3cmd] ***********************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [mongo | install backup-mongo-to-s3 script] *****************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [mongo | schedule backup-mongo-to-3s crontab] ***************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxapp_common | Install system packages] *******************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [supervisor | create application user] **********************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [supervisor | create supervisor service user] ***************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [supervisor | create supervisor directories] ****************************
==> default: ok: [localhost] => (item=/edx/app/supervisor)
==> default: ok: [localhost] => (item=/edx/app/supervisor/venvs/supervisor)
==> default:
==> default: TASK: [supervisor | create service user accessible dirs] **********************
==> default: ok: [localhost] => (item=/edx/app/supervisor/conf.d)
==> default: ok: [localhost] => (item=/edx/app/supervisor/conf.available.d)
==> default:
==> default: TASK: [supervisor | create supervisor directories] ****************************
==> default: ok: [localhost] => (item=/edx/var/supervisor)
==> default: ok: [localhost] => (item=/edx/var/log/supervisor)
==> default:
==> default: TASK: [supervisor | install supervisor in its venv] ***************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [supervisor | install supervisor in its venv] ***************************
==> default: ok: [localhost] => (item=boto=="2.34.0")
==> default: ok: [localhost] => (item=python-simple-hipchat)
==> default:
==> default: TASK: [supervisor | create supervisor upstart job] ****************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [supervisor | create pre_supervisor upstart job] ************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [supervisor | write the pre_suprevisor python script] *******************
==> default: ok: [localhost]
==> default:
==> default: TASK: [supervisor | create supervisor master config] **************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [supervisor | create a symlink for supervisortctl] **********************
==> default: changed: [localhost]
==> default:
==> default: TASK: [supervisor | create a symlink for supervisor cfg] **********************
==> default: ok: [localhost] => (item=/edx/app/supervisor/supervisord.conf)
==> default: ok: [localhost] => (item=/edx/app/supervisor/conf.d)
==> default:
==> default: TASK: [supervisor | create helper script for running supervisor] **************
==> default: changed: [localhost]
==> default:
==> default: TASK: [supervisor | start supervisor] *****************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [supervisor | wait for web port to be available] ************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [supervisor | update supervisor configuration] **************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [rbenv | fail rbenv_user required for role] *****************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [rbenv | fail rbenv_dir required for role] ******************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [rbenv | fail rbenv_ruby_version required for role] *********************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [rbenv | create rbenv user {{ edxapp_user }}] ***************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [rbenv | create rbenv dir if it does not exist] *************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [rbenv | install build depends] *****************************************
==> default: ok: [localhost] => (item=curl,build-essential,libcurl4-openssl-dev,libreadline-dev,libssl-dev,libxml2-dev,libxslt1-dev,zlib1g-dev)
==> default:
==> default: TASK: [rbenv | update rbenv repo] *********************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [rbenv | ensure ruby_env exists] ****************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [rbenv | check ruby-build installed] ************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [rbenv | if ruby-build exists, which versions we can install] ***********
==> default: changed: [localhost]
==> default:
==> default: TASK: [rbenv | create temporary directory] ************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [rbenv | clone ruby-build repo] *****************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [rbenv | install ruby-build] ********************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [rbenv | remove temporary directory] ************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [rbenv | check ruby {{ edxapp_ruby_version }} installed] ****************
==> default: changed: [localhost]
==> default:
==> default: TASK: [rbenv | install ruby {{ edxapp_ruby_version }}] ************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [rbenv | set global ruby {{ edxapp_ruby_version }}] *********************
==> default: changed: [localhost]
==> default:
==> default: TASK: [rbenv | install bundler] ***********************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [rbenv | remove rbenv version of rake] **********************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [rbenv | install rake gem] **********************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [rbenv | rehash] ********************************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [supervisor | create application user] **********************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [supervisor | create supervisor service user] ***************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [supervisor | create supervisor directories] ****************************
==> default: ok: [localhost] => (item=/edx/app/devpi/supervisor)
==> default: ok: [localhost] => (item=/edx/app/devpi/venvs/supervisor)
==> default:
==> default: TASK: [supervisor | create service user accessible dirs] **********************
==> default: ok: [localhost] => (item=/edx/app/devpi/supervisor/conf.d)
==> default: ok: [localhost] => (item=/edx/app/devpi/supervisor/conf.available.d)
==> default:
==> default: TASK: [supervisor | create supervisor directories] ****************************
==> default: ok: [localhost] => (item=/edx/var/devpi/supervisor)
==> default: ok: [localhost] => (item=/edx/var/log/devpi/supervisor)
==> default:
==> default: TASK: [supervisor | install supervisor in its venv] ***************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [supervisor | install supervisor in its venv] ***************************
==> default: ok: [localhost] => (item=boto=="2.34.0")
==> default: ok: [localhost] => (item=python-simple-hipchat)
==> default:
==> default: TASK: [supervisor | create supervisor upstart job] ****************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [supervisor | create pre_supervisor upstart job] ************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [supervisor | write the pre_suprevisor python script] *******************
==> default: ok: [localhost]
==> default:
==> default: TASK: [supervisor | create supervisor master config] **************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [supervisor | create a symlink for supervisortctl] **********************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [supervisor | create a symlink for supervisor cfg] **********************
==> default: skipping: [localhost] => (item=/edx/app/devpi/supervisor/supervisord.conf)
==> default: skipping: [localhost] => (item=/edx/app/devpi/supervisor/conf.d)
==> default:
==> default: TASK: [supervisor | create helper script for running supervisor] **************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [supervisor | start supervisor] *****************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [supervisor | wait for web port to be available] ************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [supervisor | update supervisor configuration] **************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [devpi | create devpi user] *********************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [devpi | create devpi application directories] **************************
==> default: ok: [localhost] => (item=/edx/app/devpi)
==> default: ok: [localhost] => (item=/edx/app/devpi/venvs/devpi)
==> default:
==> default: TASK: [devpi | create the devpi data directory, needs write access by the service user] ***
==> default: ok: [localhost] => (item=/edx/var/devpi)
==> default: ok: [localhost] => (item=/edx/var/devpi/data)
==> default:
==> default: TASK: [devpi | install devpi pip pkgs] ****************************************
==> default: ok: [localhost] => (item=devpi-server)
==> default: ok: [localhost] => (item=eventlet)
==> default:
==> default: TASK: [devpi | writing supervisor script] *************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [devpi | create a symlink for venv python, pip] *************************
==> default: ok: [localhost] => (item=python)
==> default: ok: [localhost] => (item=pip)
==> default:
==> default: TASK: [devpi | create a symlink for venv supervisor] **************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [devpi | create a symlink for supervisor config] ************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [devpi | update devpi supervisor configuration] *************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [devpi | ensure devpi is started] ***************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [nltk | Install unzip] **************************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [nltk | create the nltk data directory and subdirectories] **************
==> default: ok: [localhost] => (item={'url': 'http://nltk.github.com/nltk_data/packages/taggers/maxent_treebank_pos_tagger.zip', 'path': 'taggers/maxent_treebank_pos_tagger'})
==> default: ok: [localhost] => (item={'url': 'http://nltk.github.com/nltk_data/packages/corpora/stopwords.zip', 'path': 'corpora/stopwords'})
==> default: ok: [localhost] => (item={'url': 'http://nltk.github.com/nltk_data/packages/corpora/wordnet.zip', 'path': 'corpora/wordnet'})
==> default:
==> default: TASK: [nltk | download nltk data] *********************************************
==> default: ok: [localhost] => (item={'url': 'http://nltk.github.com/nltk_data/packages/taggers/maxent_treebank_pos_tagger.zip', 'path': 'taggers/maxent_treebank_pos_tagger'})
==> default: ok: [localhost] => (item={'url': 'http://nltk.github.com/nltk_data/packages/corpora/stopwords.zip', 'path': 'corpora/stopwords'})
==> default: ok: [localhost] => (item={'url': 'http://nltk.github.com/nltk_data/packages/corpora/wordnet.zip', 'path': 'corpora/wordnet'})
==> default:
==> default: TASK: [nltk | unarchive nltk data] ********************************************
==> default: skipping: [localhost] => (item={'url': 'http://nltk.github.com/nltk_data/packages/taggers/maxent_treebank_pos_tagger.zip', 'path': 'taggers/maxent_treebank_pos_tagger'})
==> default: skipping: [localhost] => (item={'url': 'http://nltk.github.com/nltk_data/packages/corpora/stopwords.zip', 'path': 'corpora/stopwords'})
==> default: skipping: [localhost] => (item={'url': 'http://nltk.github.com/nltk_data/packages/corpora/wordnet.zip', 'path': 'corpora/wordnet'})
==> default:
==> default: TASK: [user | debug var=user_info] ********************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [user | create the edxadmin group] **************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [user | ensure sudoers.d is read] ***************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [user | grant full sudo access to the edxadmin group] *******************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [user | create the users] ***********************************************
==> default: skipping: [localhost] => (item={'sudo_cmds': [u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms migrate *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp cms migrate *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms syncdb *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp cms syncdb *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms seed_permissions_roles *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms set_staff *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms transfer_students *'], 'type': 'restricted', 'name': u'automator', 'authorized_keys': []})
==> default:
==> default: TASK: [user | create .ssh directory] ******************************************
==> default: skipping: [localhost] => (item={'sudo_cmds': [u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms migrate *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp cms migrate *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms syncdb *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp cms syncdb *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms seed_permissions_roles *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms set_staff *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms transfer_students *'], 'type': 'restricted', 'name': u'automator', 'authorized_keys': []})
==> default:
==> default: TASK: [user | assign admin role to admin users] *******************************
==> default: skipping: [localhost] => (item={'sudo_cmds': [u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms migrate *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp cms migrate *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms syncdb *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp cms syncdb *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms seed_permissions_roles *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms set_staff *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms transfer_students *'], 'type': 'restricted', 'name': u'automator', 'authorized_keys': []})
==> default:
==> default: TASK: [user | get github key[s]] **********************************************
==> default: skipping: [localhost] => (item={'sudo_cmds': [u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms migrate *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp cms migrate *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms syncdb *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp cms syncdb *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms seed_permissions_roles *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms set_staff *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms transfer_students *'], 'type': 'restricted', 'name': u'automator', 'authorized_keys': []})
==> default:
==> default: TASK: [user | update the authorized_keys file] ********************************
==> default: skipping: [localhost] => (item={'sudo_cmds': [u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms migrate *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp cms migrate *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms syncdb *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp cms syncdb *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms seed_permissions_roles *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms set_staff *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms transfer_students *'], 'type': 'restricted', 'name': u'automator', 'authorized_keys': []})
==> default:
==> default: TASK: [user | create bashrc file for normal users] ****************************
==> default: skipping: [localhost] => (item={'sudo_cmds': [u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms migrate *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp cms migrate *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms syncdb *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp cms syncdb *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms seed_permissions_roles *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms set_staff *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms transfer_students *'], 'type': 'restricted', 'name': u'automator', 'authorized_keys': []})
==> default:
==> default: TASK: [user | create .profile for all users] **********************************
==> default: skipping: [localhost] => (item={'sudo_cmds': [u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms migrate *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp cms migrate *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms syncdb *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp cms syncdb *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms seed_permissions_roles *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms set_staff *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms transfer_students *'], 'type': 'restricted', 'name': u'automator', 'authorized_keys': []})
==> default:
==> default: TASK: [user | modify shell for restricted users] ******************************
==> default: skipping: [localhost] => (item={'sudo_cmds': [u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms migrate *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp cms migrate *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms syncdb *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp cms syncdb *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms seed_permissions_roles *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms set_staff *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms transfer_students *'], 'type': 'restricted', 'name': u'automator', 'authorized_keys': []})
==> default:
==> default: TASK: [user | create bashrc file for restricted users] ************************
==> default: skipping: [localhost] => (item={'sudo_cmds': [u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms migrate *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp cms migrate *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms syncdb *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp cms syncdb *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms seed_permissions_roles *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms set_staff *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms transfer_students *'], 'type': 'restricted', 'name': u'automator', 'authorized_keys': []})
==> default:
==> default: TASK: [user | create sudoers file from template] ******************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [user | change home directory ownership to root for restricted users] ***
==> default: skipping: [localhost] => (item={'sudo_cmds': [u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms migrate *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp cms migrate *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms syncdb *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp cms syncdb *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms seed_permissions_roles *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms set_staff *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms transfer_students *'], 'type': 'restricted', 'name': u'automator', 'authorized_keys': []})
==> default:
==> default: TASK: [user | create ~/bin directory] *****************************************
==> default: skipping: [localhost] => (item={'sudo_cmds': [u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms migrate *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp cms migrate *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms syncdb *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp cms syncdb *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms seed_permissions_roles *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms set_staff *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms transfer_students *'], 'type': 'restricted', 'name': u'automator', 'authorized_keys': []})
==> default:
==> default: TASK: [user | create allowed command links] ***********************************
==> default: skipping: [localhost] => (item=[{'sudo_cmds': [u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms migrate *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp cms migrate *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms syncdb *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp cms syncdb *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms seed_permissions_roles *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms set_staff *', u'ALL=(www-data) NOPASSWD:SETENV:/edx/bin/python.edxapp /edx/bin/manage.edxapp lms transfer_students *'], 'type': 'restricted', 'name': u'automator', 'authorized_keys': []}, '/usr/bin/sudo'])
==> default:
==> default: TASK: [edxapp | create application user] **************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxapp | create edxapp user dirs] **************************************
==> default: ok: [localhost] => (item=/edx/app/edxapp)
==> default: ok: [localhost] => (item=/edx/app/edxapp/.ssh)
==> default: ok: [localhost] => (item=/edx/app/edxapp/venvs)
==> default: ok: [localhost] => (item=/edx/var/edxapp/themes)
==> default: ok: [localhost] => (item=/edx/var/edxapp/staticfiles)
==> default: ok: [localhost] => (item=/edx/var/edxapp/course_static)
==> default: changed: [localhost] => (item=/edx/var/edxapp/data)
==> default:
==> default: TASK: [edxapp | create edxapp var dir] ****************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxapp | make the course data dir] *************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxapp | create edxapp log dir] ****************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxapp | create web-writable edxapp data dirs] *************************
==> default: changed: [localhost] => (item=/edx/var/edxapp/data)
==> default: ok: [localhost] => (item=/edx/var/edxapp/uploads)
==> default: ok: [localhost] => (item=/edx/var/edxapp/media)
==> default:
==> default: TASK: [edxapp | add ppas for current versions of nodejs] **********************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxapp | install system packages on which LMS and CMS rely] ************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxapp | set up edxapp .npmrc] *****************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [edxapp | create log directories for service variants] ******************
==> default: ok: [localhost] => (item=lms)
==> default: ok: [localhost] => (item=cms)
==> default:
==> default: TASK: [edxapp | code sandbox | Use libblas for 3gf] ***************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [edxapp | code sandbox | Use liblapac for 3gf] **************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [edxapp | code sandbox | Create edxapp sandbox user] ********************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxapp | code sandbox | Install apparmor utils system pkg] *************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxapp | code sandbox | write out apparmor code sandbox config] ********
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxapp | code sandbox | write out sandbox user sudoers config] *********
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxapp | code sandbox | start apparmor service] ************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxapp | code sandbox | (bootstrap) load code sandbox profile] *********
==> default: changed: [localhost]
==> default:
==> default: TASK: [edxapp | code sandbox | (bootstrap) put code sandbox into aa-enforce or aa-complain mode depending on EDXAPP_SANDBOX_ENFORCE] ***
==> default: changed: [localhost]
==> default:
==> default: TASK: [edxapp | setup the edxapp env] *****************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxapp | create edxapp configuration dir] ******************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxapp | create ssh script for git (not authenticated)] ****************
==> default: changed: [localhost]
==> default:
==> default: TASK: [edxapp | create ssh script for git (authenticated)] ********************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxapp | install read-only ssh key] ************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxapp | set git fetch.prune to ignore deleted remote refs] ************
==> default: changed: [localhost]
==> default:
==> default: TASK: [edxapp | checkout edx-platform repo into {{ edxapp_code_dir }}] ********
==> default: changed: [localhost]
==> default:
==> default: TASK: [edxapp | git clean after checking out edx-platform] ********************
==> default: changed: [localhost]
==> default:
==> default: TASK: [edxapp | checkout theme] ***********************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxapp | Stat each requirements file to ensure it exists] **************
==> default: ok: [localhost] => (item=/edx/app/edxapp/edx-platform/requirements/edx/pre.txt)
==> default: ok: [localhost] => (item=/edx/app/edxapp/edx-platform/requirements/edx/post.txt)
==> default: ok: [localhost] => (item=/edx/app/edxapp/edx-platform/requirements/edx/base.txt)
==> default: ok: [localhost] => (item=/edx/app/edxapp/edx-platform/requirements/edx/paver.txt)
==> default: ok: [localhost] => (item=/edx/app/edxapp/edx-platform/requirements/edx/github.txt)
==> default: ok: [localhost] => (item=/edx/app/edxapp/edx-platform/requirements/edx-sandbox/post.txt)
==> default: ok: [localhost] => (item=/edx/app/edxapp/edx-platform/requirements/edx-sandbox/local.txt)
==> default: ok: [localhost] => (item=/edx/app/edxapp/edx-platform/requirements/edx-sandbox/base.txt)
==> default:
==> default: TASK: [edxapp | Updating requirement files for git mirror] ********************
==> default: changed: [localhost] => (item={'invocation': {'module_name': u'stat', 'module_args': u'path="/edx/app/edxapp/edx-platform/requirements/edx/pre.txt"'}, 'item': u'/edx/app/edxapp/edx-platform/requirements/edx/pre.txt', u'stat': {u'uid': 502, u'exists': True, u'woth': False, u'mtime': 1438633629.0, u'inode': 48677957, u'isgid': False, u'size': 494, u'wgrp': False, u'isuid': False, u'isreg': True, u'gid': 20, u'ischr': False, u'wusr': True, u'xoth': False, u'rusr': True, u'nlink': 1, u'issock': False, u'rgrp': True, u'path': u'/edx/app/edxapp/edx-platform/requirements/edx/pre.txt', u'xusr': False, u'atime': 1438633629.0, u'md5': u'3bd95adca862124e6af6596f1d633c18', u'isdir': False, u'ctime': 1438633629.0, u'isblk': False, u'xgrp': False, u'dev': 20, u'roth': True, u'isfifo': False, u'mode': u'0644', u'checksum': u'516078067840a3ebd69b16ceac24cf5d75a40942', u'islnk': False}, u'changed': False})
==> default: changed: [localhost] => (item={'invocation': {'module_name': u'stat', 'module_args': u'path="/edx/app/edxapp/edx-platform/requirements/edx/post.txt"'}, 'item': u'/edx/app/edxapp/edx-platform/requirements/edx/post.txt', u'stat': {u'uid': 502, u'exists': True, u'woth': False, u'mtime': 1438633629.0, u'inode': 48677956, u'isgid': False, u'size': 331, u'wgrp': False, u'isuid': False, u'isreg': True, u'gid': 20, u'ischr': False, u'wusr': True, u'xoth': False, u'rusr': True, u'nlink': 1, u'issock': False, u'rgrp': True, u'path': u'/edx/app/edxapp/edx-platform/requirements/edx/post.txt', u'xusr': False, u'atime': 1438633629.0, u'md5': u'473c075efbc62c865223a4fff844e8a8', u'isdir': False, u'ctime': 1438633629.0, u'isblk': False, u'xgrp': False, u'dev': 20, u'roth': True, u'isfifo': False, u'mode': u'0644', u'checksum': u'e8b714bdd594b29afa8bbc67fd5dfe4c77d7ed76', u'islnk': False}, u'changed': False})
==> default: changed: [localhost] => (item={'invocation': {'module_name': u'stat', 'module_args': u'path="/edx/app/edxapp/edx-platform/requirements/edx/base.txt"'}, 'item': u'/edx/app/edxapp/edx-platform/requirements/edx/base.txt', u'stat': {u'uid': 502, u'exists': True, u'woth': False, u'mtime': 1438633629.0, u'inode': 48677949, u'isgid': False, u'size': 3097, u'wgrp': False, u'isuid': False, u'isreg': True, u'gid': 20, u'ischr': False, u'wusr': True, u'xoth': False, u'rusr': True, u'nlink': 1, u'issock': False, u'rgrp': True, u'path': u'/edx/app/edxapp/edx-platform/requirements/edx/base.txt', u'xusr': False, u'atime': 1438633629.0, u'md5': u'c2ad134f8636b9c7a42377a43bf9b8a3', u'isdir': False, u'ctime': 1438633629.0, u'isblk': False, u'xgrp': False, u'dev': 20, u'roth': True, u'isfifo': False, u'mode': u'0644', u'checksum': u'd5ef86f0aa04842d13c222e318758bed03f68c9e', u'islnk': False}, u'changed': False})
==> default: changed: [localhost] => (item={'invocation': {'module_name': u'stat', 'module_args': u'path="/edx/app/edxapp/edx-platform/requirements/edx/paver.txt"'}, 'item': u'/edx/app/edxapp/edx-platform/requirements/edx/paver.txt', u'stat': {u'uid': 502, u'exists': True, u'woth': False, u'mtime': 1438633629.0, u'inode': 48677955, u'isgid': False, u'size': 111, u'wgrp': False, u'isuid': False, u'isreg': True, u'gid': 20, u'ischr': False, u'wusr': True, u'xoth': False, u'rusr': True, u'nlink': 1, u'issock': False, u'rgrp': True, u'path': u'/edx/app/edxapp/edx-platform/requirements/edx/paver.txt', u'xusr': False, u'atime': 1438633629.0, u'md5': u'bb412b74d9294cfc91a41ba71a7bb8b9', u'isdir': False, u'ctime': 1438633629.0, u'isblk': False, u'xgrp': False, u'dev': 20, u'roth': True, u'isfifo': False, u'mode': u'0644', u'checksum': u'213d136c912e1faf092ca1eba214db09da1f328b', u'islnk': False}, u'changed': False})
==> default: changed: [localhost] => (item={'invocation': {'module_name': u'stat', 'module_args': u'path="/edx/app/edxapp/edx-platform/requirements/edx/github.txt"'}, 'item': u'/edx/app/edxapp/edx-platform/requirements/edx/github.txt', u'stat': {u'uid': 502, u'exists': True, u'woth': False, u'mtime': 1438633629.0, u'inode': 48677952, u'isgid': False, u'size': 4923, u'wgrp': False, u'isuid': False, u'isreg': True, u'gid': 20, u'ischr': False, u'wusr': True, u'xoth': False, u'rusr': True, u'nlink': 1, u'issock': False, u'rgrp': True, u'path': u'/edx/app/edxapp/edx-platform/requirements/edx/github.txt', u'xusr': False, u'atime': 1438633629.0, u'md5': u'7004730f76d09a0148132fbf57cdf36a', u'isdir': False, u'ctime': 1438633629.0, u'isblk': False, u'xgrp': False, u'dev': 20, u'roth': True, u'isfifo': False, u'mode': u'0644', u'checksum': u'0ca2210a5aa1d271ccb72ce7cf520242c4d0c182', u'islnk': False}, u'changed': False})
==> default: changed: [localhost] => (item={'invocation': {'module_name': u'stat', 'module_args': u'path="/edx/app/edxapp/edx-platform/requirements/edx-sandbox/post.txt"'}, 'item': u'/edx/app/edxapp/edx-platform/requirements/edx-sandbox/post.txt', u'stat': {u'uid': 502, u'exists': True, u'woth': False, u'mtime': 1438633629.0, u'inode': 48677947, u'isgid': False, u'size': 313, u'wgrp': False, u'isuid': False, u'isreg': True, u'gid': 20, u'ischr': False, u'wusr': True, u'xoth': False, u'rusr': True, u'nlink': 1, u'issock': False, u'rgrp': True, u'path': u'/edx/app/edxapp/edx-platform/requirements/edx-sandbox/post.txt', u'xusr': False, u'atime': 1438633629.0, u'md5': u'1f8d2ca7aa01706f2859c25b8bede5f3', u'isdir': False, u'ctime': 1438633629.0, u'isblk': False, u'xgrp': False, u'dev': 20, u'roth': True, u'isfifo': False, u'mode': u'0644', u'checksum': u'cb294b185d8f40e49506c4c342acc8fd6b3683f6', u'islnk': False}, u'changed': False})
==> default: changed: [localhost] => (item={'invocation': {'module_name': u'stat', 'module_args': u'path="/edx/app/edxapp/edx-platform/requirements/edx-sandbox/local.txt"'}, 'item': u'/edx/app/edxapp/edx-platform/requirements/edx-sandbox/local.txt', u'stat': {u'uid': 502, u'exists': True, u'woth': False, u'mtime': 1438633629.0, u'inode': 48677946, u'isgid': False, u'size': 507, u'wgrp': False, u'isuid': False, u'isreg': True, u'gid': 20, u'ischr': False, u'wusr': True, u'xoth': False, u'rusr': True, u'nlink': 1, u'issock': False, u'rgrp': True, u'path': u'/edx/app/edxapp/edx-platform/requirements/edx-sandbox/local.txt', u'xusr': False, u'atime': 1438633629.0, u'md5': u'09046a50cef36e7ca9f622fd3b3b397f', u'isdir': False, u'ctime': 1438633629.0, u'isblk': False, u'xgrp': False, u'dev': 20, u'roth': True, u'isfifo': False, u'mode': u'0644', u'checksum': u'01e96ac6feaff75b076e04cbdb2b9b9a632a7034', u'islnk': False}, u'changed': False})
==> default: changed: [localhost] => (item={'invocation': {'module_name': u'stat', 'module_args': u'path="/edx/app/edxapp/edx-platform/requirements/edx-sandbox/base.txt"'}, 'item': u'/edx/app/edxapp/edx-platform/requirements/edx-sandbox/base.txt', u'stat': {u'uid': 502, u'exists': True, u'woth': False, u'mtime': 1438633629.0, u'inode': 48677945, u'isgid': False, u'size': 430, u'wgrp': False, u'isuid': False, u'isreg': True, u'gid': 20, u'ischr': False, u'wusr': True, u'xoth': False, u'rusr': True, u'nlink': 1, u'issock': False, u'rgrp': True, u'path': u'/edx/app/edxapp/edx-platform/requirements/edx-sandbox/base.txt', u'xusr': False, u'atime': 1438633629.0, u'md5': u'a9e3d33a36e6dd36863bd039478b06a9', u'isdir': False, u'ctime': 1438633629.0, u'isblk': False, u'xgrp': False, u'dev': 20, u'roth': True, u'isfifo': False, u'mode': u'0644', u'checksum': u'e029ed4816c4e5d3c23609e91541be4abcaefa96', u'islnk': False}, u'changed': False})
==> default:
==> default: TASK: [edxapp | gem install bundler] ******************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [edxapp | bundle install] ***********************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [edxapp | Set the npm registry] *****************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxapp | Set the npm registry permissions] *****************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [edxapp | Install edx-platform npm dependencies] ************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [edxapp | install python pre-requirements] ******************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxapp | install python base-requirements] *****************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [edxapp | stat path="{{ post_requirements_file }}"] *********************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxapp | install python post-requirements] *****************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxapp | install python paver-requirements] ****************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [edxapp | stat path="{{ custom_requirements_file }}"] *******************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxapp | install python custom-requirements] ***************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxapp | install python post-post requirements] ************************
==> default: changed: [localhost] => (item=/edx/app/edxapp/edx-platform/requirements/edx/github.txt)
==> default: changed: [localhost] => (item=/edx/app/edxapp/edx-platform/requirements/edx/local.txt)
==> default:
==> default: TASK: [edxapp | install python private requirements] **************************
==> default: skipping: [localhost] => (item=/edx/app/edxapp/edx-platform/requirements/edx/edx-private.txt)
==> default:
==> default: TASK: [edxapp | install python extra requirements] ****************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxapp | install CAS attribute module] *********************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxapp | install sandbox requirements into regular venv] ***************
==> default: skipping: [localhost] => (item=/edx/app/edxapp/edx-platform/requirements/edx-sandbox/base.txt)
==> default: skipping: [localhost] => (item=/edx/app/edxapp/edx-platform/requirements/edx-sandbox/local.txt)
==> default: skipping: [localhost] => (item=/edx/app/edxapp/edx-platform/requirements/edx-sandbox/post.txt)
==> default:
==> default: TASK: [edxapp | code sandbox | put sandbox apparmor profile in complain mode] ***
==> default: changed: [localhost]
==> default:
==> default: TASK: [edxapp | code sandbox | Install base sandbox requirements and create sandbox virtualenv] ***
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxapp | code sandbox | Install sandbox requirements into sandbox venv] ***
==> default: ok: [localhost] => (item=/edx/app/edxapp/edx-platform/requirements/edx-sandbox/local.txt)
==> default: ok: [localhost] => (item=/edx/app/edxapp/edx-platform/requirements/edx-sandbox/post.txt)
==> default:
==> default: TASK: [edxapp | code sandbox | put code sandbox into aa-enforce or aa-complain mode, depending on EDXAPP_SANDBOX_ENFORCE] ***
==> default: changed: [localhost]
==> default:
==> default: TASK: [edxapp | compiling all py files in the edx-platform repo] **************
==> default: changed: [localhost]
==> default:
==> default: TASK: [edxapp | give other read permissions to the virtualenv] ****************
==> default: changed: [localhost]
==> default:
==> default: TASK: [edxapp | openid workaround] ********************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [edxapp | get s3 one time url] ******************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxapp | download from one time url] ***********************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxapp | unzip the data to the data dir] *******************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxapp | make the course data web user writable] ***********************
==> default: changed: [localhost]
==> default:
==> default: TASK: [edxapp | create {{ item }} application config] *************************
==> default: ok: [localhost] => (item=lms)
==> default: ok: [localhost] => (item=cms)
==> default:
==> default: TASK: [edxapp | create {{ item }} auth file] **********************************
==> default: ok: [localhost] => (item=lms)
==> default: ok: [localhost] => (item=cms)
==> default:
==> default: TASK: [edxapp | create {{ item }} yaml application config] ********************
==> default: ok: [localhost] => (item=lms)
==> default: ok: [localhost] => (item=cms)
==> default:
==> default: TASK: [edxapp | create {{ item }} yaml auth file] *****************************
==> default: ok: [localhost] => (item=lms)
==> default: ok: [localhost] => (item=cms)
==> default:
==> default: TASK: [edxapp | writing {{ item }} supervisor script] *************************
==> default: ok: [localhost] => (item=lms)
==> default: ok: [localhost] => (item=cms)
==> default:
==> default: TASK: [edxapp | writing edxapp supervisor script] *****************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxapp | add gunicorn configuration files] *****************************
==> default: ok: [localhost] => (item=lms)
==> default: ok: [localhost] => (item=cms)
==> default:
==> default: TASK: [edxapp | writing celery worker supervisor script] **********************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxapp | enable {{ item }} supervisor script] **************************
==> default: skipping: [localhost] => (item=lms)
==> default: skipping: [localhost] => (item=cms)
==> default:
==> default: TASK: [edxapp | enable edxapp supervisor script] ******************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxapp | enable celery worker supervisor script] ***********************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxapp | create helper scripts for managing edxapp] ********************
==> default: ok: [localhost] => (item=['edxapp-migrate', 'lms'])
==> default: ok: [localhost] => (item=['edxapp-migrate', 'cms'])
==> default: ok: [localhost] => (item=['edxapp-runserver', 'lms'])
==> default: ok: [localhost] => (item=['edxapp-runserver', 'cms'])
==> default: ok: [localhost] => (item=['edxapp-syncdb', 'lms'])
==> default: ok: [localhost] => (item=['edxapp-syncdb', 'cms'])
==> default: ok: [localhost] => (item=['edxapp-update-assets', 'lms'])
==> default: ok: [localhost] => (item=['edxapp-update-assets', 'cms'])
==> default: ok: [localhost] => (item=['edxapp-shell', 'lms'])
==> default: ok: [localhost] => (item=['edxapp-shell', 'cms'])
==> default:
==> default: TASK: [edxapp | syncdb and migrate] *******************************************
==> default: changed: [localhost] => (item=lms)
==> default: changed: [localhost] => (item=cms)
==> default:
==> default: TASK: [edxapp | gather {{ item }} static assets with paver] *******************
==> default: skipping: [localhost] => (item=lms)
==> default: skipping: [localhost] => (item=cms)
==> default:
==> default: TASK: [edxapp | remove all course data before checkout] ***********************
==> default: skipping: [localhost] => (item=EDXAPP_XML_COURSES)
==> default:
==> default: TASK: [edxapp | make the course data updatable by the edxapp user] ************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxapp | clone the xml course repo] ************************************
==> default: skipping: [localhost] => (item=EDXAPP_XML_COURSES)
==> default:
==> default: TASK: [edxapp | update course.xml] ********************************************
==> default: skipping: [localhost] => (item=EDXAPP_XML_COURSES)
==> default:
==> default: TASK: [edxapp | make symlinks for the static data] ****************************
==> default: skipping: [localhost] => (item=EDXAPP_XML_COURSES)
==> default:
==> default: TASK: [edxapp | make symlinks so code works] **********************************
==> default: skipping: [localhost] => (item=EDXAPP_XML_COURSES)
==> default:
==> default: TASK: [edxapp | import courses with nostatic flag] ****************************
==> default: skipping: [localhost] => (item=EDXAPP_XML_COURSES)
==> default:
==> default: TASK: [edxapp | import courses including static data] *************************
==> default: skipping: [localhost] => (item=EDXAPP_XML_COURSES)
==> default:
==> default: TASK: [edxapp | delete courses that were fully imported] **********************
==> default: skipping: [localhost] => (item=EDXAPP_XML_COURSES)
==> default:
==> default: TASK: [edxapp | create an archive of course data and course static dirs] ******
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxapp | upload archive to s3] *****************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxapp | remove archive from disk] *************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxapp | update supervisor configuration] ******************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxapp | ensure edxapp has started] ************************************
==> default: skipping: [localhost] => (item=lms)
==> default: skipping: [localhost] => (item=cms)
==> default:
==> default: TASK: [edxapp | ensure edxapp_workers has started] ****************************
==> default: skipping: [localhost] => (item={'queue': 'low', 'service_variant': 'cms', 'monitor': True, 'concurrency': 3})
==> default: skipping: [localhost] => (item={'queue': 'default', 'service_variant': 'cms', 'monitor': True, 'concurrency': 4})
==> default: skipping: [localhost] => (item={'queue': 'high', 'service_variant': 'cms', 'monitor': True, 'concurrency': 1})
==> default: skipping: [localhost] => (item={'queue': 'low', 'service_variant': 'lms', 'monitor': True, 'concurrency': 1})
==> default: skipping: [localhost] => (item={'queue': 'default', 'service_variant': 'lms', 'monitor': True, 'concurrency': 3})
==> default: skipping: [localhost] => (item={'queue': 'high', 'service_variant': 'lms', 'monitor': True, 'concurrency': 4})
==> default: skipping: [localhost] => (item={'queue': 'high_mem', 'service_variant': 'lms', 'monitor': False, 'concurrency': 2, 'max_tasks_per_child': 1})
==> default:
==> default: TASK: [edxapp | create symlinks from the venv bin dir] ************************
==> default: ok: [localhost] => (item=python)
==> default: ok: [localhost] => (item=pip)
==> default: ok: [localhost] => (item=django-admin.py)
==> default:
==> default: TASK: [edxapp | create symlinks from the repo dir] ****************************
==> default: ok: [localhost] => (item=manage.py)
==> default:
==> default: TASK: [edxapp | remove read-only ssh key] *************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxapp | get instance information] *************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxapp | tag instance with edx_platform version] ***********************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxapp | tag instance with edxapp theme version] **********************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edxapp | set_fact edxapp_installed=true] *******************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [edxapp | restart edxapp] ***********************************************
==> default: skipping: [localhost] => (item=lms)
==> default: skipping: [localhost] => (item=cms)
==> default:
==> default: TASK: [edxapp | restart edxapp_workers] ***************************************
==> default: skipping: [localhost] => (item={'queue': 'low', 'service_variant': 'cms', 'monitor': True, 'concurrency': 3})
==> default: skipping: [localhost] => (item={'queue': 'default', 'service_variant': 'cms', 'monitor': True, 'concurrency': 4})
==> default: skipping: [localhost] => (item={'queue': 'high', 'service_variant': 'cms', 'monitor': True, 'concurrency': 1})
==> default: skipping: [localhost] => (item={'queue': 'low', 'service_variant': 'lms', 'monitor': True, 'concurrency': 1})
==> default: skipping: [localhost] => (item={'queue': 'default', 'service_variant': 'lms', 'monitor': True, 'concurrency': 3})
==> default: skipping: [localhost] => (item={'queue': 'high', 'service_variant': 'lms', 'monitor': True, 'concurrency': 4})
==> default: skipping: [localhost] => (item={'queue': 'high_mem', 'service_variant': 'lms', 'monitor': False, 'concurrency': 2, 'max_tasks_per_child': 1})
==> default:
==> default: TASK: [oraclejdk | download Oracle Java] **************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [oraclejdk | create jvm dir] ********************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [oraclejdk | untar Oracle Java] *****************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [oraclejdk | create symlink expected by elasticsearch] ******************
==> default: ok: [localhost]
==> default:
==> default: TASK: [oraclejdk | update alternatives java] **********************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [oraclejdk | update alternatives javac] *********************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [oraclejdk | update alternatives javaws] ********************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [oraclejdk | add JAVA_HOME for Oracle Java] *****************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [elasticsearch | download elasticsearch] ********************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [elasticsearch | install elasticsearch from local package] **************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [elasticsearch | create directories] ************************************
==> default: ok: [localhost] => (item=/edx/var/elasticsearch)
==> default: ok: [localhost] => (item=/edx/var/log/elasticsearch)
==> default: ok: [localhost] => (item=/edx/etc/elasticsearch)
==> default:
==> default: TASK: [elasticsearch | update elasticsearch defaults] *************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [elasticsearch | drop the elasticsearch config] *************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [elasticsearch | drop the elasticsearch logging config] *****************
==> default: ok: [localhost]
==> default:
==> default: TASK: [elasticsearch | Ensure elasticsearch is enabled and started] ***********
==> default: ok: [localhost]
==> default:
==> default: TASK: [elasticsearch | Restart elastic when there has been an upgrade] ********
==> default: skipping: [localhost]
==> default:
==> default: TASK: [rbenv | fail rbenv_user required for role] *****************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [rbenv | fail rbenv_dir required for role] ******************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [rbenv | fail rbenv_ruby_version required for role] *********************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [rbenv | create rbenv user {{ common_web_user }}] ***********************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [rbenv | create rbenv dir if it does not exist] *************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [rbenv | install build depends] *****************************************
==> default: ok: [localhost] => (item=curl,build-essential,libcurl4-openssl-dev,libreadline-dev,libssl-dev,libxml2-dev,libxslt1-dev,zlib1g-dev)
==> default:
==> default: TASK: [rbenv | update rbenv repo] *********************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [rbenv | ensure ruby_env exists] ****************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [rbenv | check ruby-build installed] ************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [rbenv | if ruby-build exists, which versions we can install] ***********
==> default: changed: [localhost]
==> default:
==> default: TASK: [rbenv | create temporary directory] ************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [rbenv | clone ruby-build repo] *****************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [rbenv | install ruby-build] ********************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [rbenv | remove temporary directory] ************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [rbenv | check ruby {{ forum_ruby_version }} installed] *****************
==> default: changed: [localhost]
==> default:
==> default: TASK: [rbenv | install ruby {{ forum_ruby_version }}] *************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [rbenv | set global ruby {{ forum_ruby_version }}] **********************
==> default: changed: [localhost]
==> default:
==> default: TASK: [rbenv | install bundler] ***********************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [rbenv | remove rbenv version of rake] **********************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [rbenv | install rake gem] **********************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [rbenv | rehash] ********************************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [forum | create application user] ***************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [forum | create forum app dir] ******************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [forum | setup the forum env] *******************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [forum | create {{ forum_data_dir }}] ***********************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [forum | create the supervisor config] **********************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [forum | enable the supervisor config] **********************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [forum | create the supervisor wrapper] *********************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [forum | git checkout forum repo into {{ forum_code_dir }}] *************
==> default: changed: [localhost]
==> default:
==> default: TASK: [forum | install comments service bundle] *******************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [forum | update supervisor configuration] *******************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [forum | ensure forum is started] ***************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [forum | test that the required service are listening] ******************
==> default: skipping: [localhost] => (item={'host': u'localhost', 'port': u'9200', 'service': 'elasticsearch'})
==> default:
==> default: TASK: [forum | test that mongo replica set members are listing] ***************
==> default: skipping: [localhost] => (item=localhost)
==> default:
==> default: TASK: [forum | get instance information] **************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [forum | tag instance] **************************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [forum | set_fact forum_installed=true] *********************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [notifier | install notifier specific system packages] ******************
==> default: ok: [localhost]
==> default:
==> default: TASK: [notifier | check if incommon ca is installed] **************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [notifier | create incommon ca directory] *******************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [notifier | retrieve incommon server CA] ********************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [notifier | add InCommon ca cert] ***************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [notifier | update ca certs globally] ***********************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [notifier | create notifier user {{ notifier_user }}] *******************
==> default: changed: [localhost]
==> default:
==> default: TASK: [notifier | create notifier app dir] ************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [notifier | setup the notifier env] *************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [notifier | drop a bash_profile] ****************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [notifier | ensure .bashrc exists] **************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [notifier | add source of notifier_env to .bashrc] **********************
==> default: changed: [localhost]
==> default:
==> default: TASK: [notifier | add source venv to .bashrc] *********************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [notifier | create notifier DB directory] *******************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [notifier | create notifier/bin directory] ******************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [notifier | create notifier/.ssh directory] *****************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [notifier | create service log dir] *************************************
==> default: ok: [localhost] => (item=/edx/var/log/notifier)
==> default:
==> default: TASK: [notifier | write supervisord wrapper for celery workers] ***************
==> default: ok: [localhost]
==> default:
==> default: TASK: [notifier | write supervisord wrapper for scheduler] ********************
==> default: ok: [localhost]
==> default:
==> default: TASK: [notifier | write supervisord config for celery workers] ****************
==> default: ok: [localhost]
==> default:
==> default: TASK: [notifier | write supervisord config for scheduler] *********************
==> default: ok: [localhost]
==> default:
==> default: TASK: [notifier | enable supervisord config for celery workers] ***************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [notifier | enable supervisord config for scheduler] ********************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [notifier | checkout code] **********************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [notifier | create ssh script for git (not authenticated)] **************
==> default: changed: [localhost]
==> default:
==> default: TASK: [notifier | create ssh script for git (authenticated)] ******************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [notifier | install read-only ssh key] **********************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [notifier | checkout theme] *********************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [notifier | write notifier local settings] ******************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [notifier | source repo group perms] ************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [notifier | install application requirements] ***************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [notifier | fix permissions on notifer db file] *************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [notifier | syncdb] *****************************************************
==> default: changed: [localhost]
==> default:
==> default: TASK: [browsers | install system packages] ************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [browsers | download browser debian packages from S3] *******************
==> default: changed: [localhost] => (item={'url': 'https://s3.amazonaws.com/vagrant.testeng.edx.org/google-chrome-stable_30.0.1599.114-1_amd64.deb', 'name': 'google-chrome-stable_30.0.1599.114-1_amd64.deb'})
==> default: changed: [localhost] => (item={'url': 'https://s3.amazonaws.com/vagrant.testeng.edx.org/firefox_28.0%2Bbuild2-0ubuntu0.12.04.1_amd64.deb', 'name': 'firefox_28.0+build2-0ubuntu0.12.04.1_amd64.deb'})
==> default:
==> default: TASK: [browsers | install browser debian packages] ****************************
==> default: changed: [localhost] => (item={'url': 'https://s3.amazonaws.com/vagrant.testeng.edx.org/google-chrome-stable_30.0.1599.114-1_amd64.deb', 'name': 'google-chrome-stable_30.0.1599.114-1_amd64.deb'})
==> default: changed: [localhost] => (item={'url': 'https://s3.amazonaws.com/vagrant.testeng.edx.org/firefox_28.0%2Bbuild2-0ubuntu0.12.04.1_amd64.deb', 'name': 'firefox_28.0+build2-0ubuntu0.12.04.1_amd64.deb'})
==> default:
==> default: TASK: [browsers | download ChromeDriver] **************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [browsers | unzip ChromeDriver tarfile] *********************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [browsers | move ChromeDriver binary to /usr/local] *********************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [browsers | make ChromeDriver binary executable] ************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [browsers | verify ChromeDriver location and mode] **********************
==> default: ok: [localhost]
==> default:
==> default: TASK: [browsers | assert ] ****************************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [browsers | download PhantomJS] *****************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [browsers | unpack the PhantomJS tarfile] *******************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [browsers | move PhantomJS binary to /usr/local] ************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [browsers | verify phantomjs location] **********************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [browsers | assert ] ****************************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [browsers | create xvfb upstart script] *********************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [browsers | start xvfb] *************************************************
==> default: failed: [localhost] => {"changed": true, "cmd": "start xvfb", "delta": "0:00:00.006654", "end": "2015-08-03 20:30:41.257637", "rc": 1, "start": "2015-08-03 20:30:41.250983", "warnings": []}
==> default: stderr: start: Job is already running: xvfb
==> default: ...ignoring
==> default:
==> default: TASK: [browsermob-proxy | get zip file] ***************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [browsermob-proxy | unzip into /var/tmp/] *******************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [browsermob-proxy | move to /etc/browsermob-proxy/] *********************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [browsermob-proxy | change permissions of main script] ******************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [browsermob-proxy | add wrapper script /usr/local/bin/browsermob-proxy] ***
==> default: skipping: [localhost]
==> default:
==> default: TASK: [browsermob-proxy | change permissions of wrapper script] ***************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [jscover | Download JSCover] ********************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [jscover | Unzip JSCover] ***********************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [jscover | Install JSCover JAR] *****************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [jscover | Set JSCover permissions] *************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [local_dev | install useful system packages] ****************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [local_dev | set login shell for app accounts] **************************
==> default: changed: [localhost] => (item={'repo': 'edx-platform', 'home': u'/edx/app/edxapp', 'user': u'edxapp', 'env': 'edxapp_env'})
==> default: changed: [localhost] => (item={'repo': 'cs_comments_service', 'home': u'/edx/app/forum', 'user': u'forum', 'env': 'forum_env'})
==> default: ok: [localhost] => (item={'repo': 'ora', 'home': u'/edx/app/ora', 'user': u'ora', 'env': 'ora_env'})
==> default: changed: [localhost] => (item={'repo': '', 'home': u'/edx/app/notifier', 'user': u'notifier', 'env': 'notifier_env'})
==> default:
==> default: TASK: [local_dev | add forum user to www-data group] **************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [local_dev | set forum rbenv and gem permissions] ***********************
==> default: changed: [localhost] => (item=/edx/app/forum/.gem)
==> default:
==> default: TASK: [local_dev | create login scripts] **************************************
==> default: ok: [localhost] => (item={'repo': 'edx-platform', 'home': u'/edx/app/edxapp', 'user': u'edxapp', 'env': 'edxapp_env'})
==> default: ok: [localhost] => (item={'repo': 'cs_comments_service', 'home': u'/edx/app/forum', 'user': u'forum', 'env': 'forum_env'})
==> default: changed: [localhost] => (item={'repo': 'ora', 'home': u'/edx/app/ora', 'user': u'ora', 'env': 'ora_env'})
==> default: changed: [localhost] => (item={'repo': '', 'home': u'/edx/app/notifier', 'user': u'notifier', 'env': 'notifier_env'})
==> default:
==> default: TASK: [local_dev | configure git] *********************************************
==> default: changed: [localhost] => (item={'repo': 'edx-platform', 'home': u'/edx/app/edxapp', 'user': u'edxapp', 'env': 'edxapp_env'})
==> default: ok: [localhost] => (item={'repo': 'cs_comments_service', 'home': u'/edx/app/forum', 'user': u'forum', 'env': 'forum_env'})
==> default: changed: [localhost] => (item={'repo': 'ora', 'home': u'/edx/app/ora', 'user': u'ora', 'env': 'ora_env'})
==> default: ok: [localhost] => (item={'repo': '', 'home': u'/edx/app/notifier', 'user': u'notifier', 'env': 'notifier_env'})
==> default:
==> default: TASK: [local_dev | preserve DISPLAY for sudo] *********************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [local_dev | login share X11 auth to app users] *************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [local_dev | update bashrc with X11 share script] ***********************
==> default: ok: [localhost]
==> default:
==> default: TASK: [local_dev | add paver autocomplete] ************************************
==> default: ok: [localhost] => (item={'repo': 'edx-platform', 'home': u'/edx/app/edxapp', 'user': u'edxapp', 'env': 'edxapp_env'})
==> default: ok: [localhost] => (item={'repo': 'cs_comments_service', 'home': u'/edx/app/forum', 'user': u'forum', 'env': 'forum_env'})
==> default: changed: [localhost] => (item={'repo': 'ora', 'home': u'/edx/app/ora', 'user': u'ora', 'env': 'ora_env'})
==> default: ok: [localhost] => (item={'repo': '', 'home': u'/edx/app/notifier', 'user': u'notifier', 'env': 'notifier_env'})
==> default:
==> default: TASK: [local_dev | add preview.localhost to /etc/hosts] ***********************
==> default: changed: [localhost]
==> default:
==> default: TASK: [demo | create demo app and data dirs] **********************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [demo | check out the demo course] **************************************
==> default: ok: [localhost]
==> default:
==> default: TASK: [demo | import demo course] *********************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [demo | create some test users and enroll them in the course] ***********
==> default: skipping: [localhost] => (item={'password': 'edx', 'email': '[email protected]', 'mode': 'honor'})
==> default: skipping: [localhost] => (item={'password': 'edx', 'email': '[email protected]', 'mode': 'audit'})
==> default: skipping: [localhost] => (item={'password': 'edx', 'email': '[email protected]', 'mode': 'verified'})
==> default:
==> default: TASK: [demo | create staff user] **********************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [demo | add test users to the certificate whitelist] ********************
==> default: skipping: [localhost] => (item={'password': 'edx', 'email': '[email protected]', 'mode': 'honor'})
==> default: skipping: [localhost] => (item={'password': 'edx', 'email': '[email protected]', 'mode': 'audit'})
==> default: skipping: [localhost] => (item={'password': 'edx', 'email': '[email protected]', 'mode': 'verified'})
==> default:
==> default: TASK: [demo | seed the forums for the demo course] ****************************
==> default: skipping: [localhost] => (item={'password': 'edx', 'email': '[email protected]', 'mode': 'honor'})
==> default: skipping: [localhost] => (item={'password': 'edx', 'email': '[email protected]', 'mode': 'audit'})
==> default: skipping: [localhost] => (item={'password': 'edx', 'email': '[email protected]', 'mode': 'verified'})
==> default:
==> default: TASK: [edx_service | create application user] *********************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edx_service | create edx_service app, venv, data, and staticfiles dirs] ***
==> default: skipping: [localhost]
==> default: skipping: [localhost] => (item=venvs)
==> default: skipping: [localhost] => (item=data)
==> default: skipping: [localhost] => (item=staticfiles)
==> default:
==> default: TASK: [edx_service | create /edx/var and /edx/etc dirs] ***********************
==> default: skipping: [localhost] => (item=/edx/var)
==> default: skipping: [localhost] => (item=/edx/etc)
==> default:
==> default: TASK: [edx_service | create edx_service log dir] ******************************
==> default: skipping: [localhost] => (item=/edx/var/log/analytics_api)
==> default:
==> default: TASK: [edx_service | write out app config file] *******************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edx_service | install a bunch of system packages on which edx_service relies] ***
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edx_service | install a bunch of system packages on which edx_service relies] ***
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edx_service | set git fetch.prune to ignore deleted remote refs] *******
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edx_service | validate git protocol] ***********************************
==> default: skipping: [localhost] => (item={'REPO': 'edx-analytics-data-api.git', 'DOMAIN': u'github.com', 'VERSION': u'master', 'PROTOCOL': u'https', 'PATH': u'edx', 'DESTINATION': u'/edx/app/analytics_api/analytics_api', 'SSH_KEY': None})
==> default:
==> default: TASK: [edx_service | install read-only ssh key] *******************************
==> default: skipping: [localhost] => (item={'REPO': 'edx-analytics-data-api.git', 'DOMAIN': u'github.com', 'VERSION': u'master', 'PROTOCOL': u'https', 'PATH': u'edx', 'DESTINATION': u'/edx/app/analytics_api/analytics_api', 'SSH_KEY': None})
==> default:
==> default: TASK: [edx_service | checkout code over ssh] **********************************
==> default: skipping: [localhost] => (item={'REPO': 'edx-analytics-data-api.git', 'DOMAIN': u'github.com', 'VERSION': u'master', 'PROTOCOL': u'https', 'PATH': u'edx', 'DESTINATION': u'/edx/app/analytics_api/analytics_api', 'SSH_KEY': None})
==> default:
==> default: TASK: [edx_service | checkout code over https] ********************************
==> default: skipping: [localhost] => (item={'REPO': 'edx-analytics-data-api.git', 'DOMAIN': u'github.com', 'VERSION': u'master', 'PROTOCOL': u'https', 'PATH': u'edx', 'DESTINATION': u'/edx/app/analytics_api/analytics_api', 'SSH_KEY': None})
==> default:
==> default: TASK: [edx_service | get instance information] ********************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [edx_service | tag instance] ********************************************
==> default: skipping: [localhost] => (item=[{'REPO': 'edx-analytics-data-api.git', 'DOMAIN': u'github.com', 'VERSION': u'master', 'PROTOCOL': u'https', 'PATH': u'edx', 'DESTINATION': u'/edx/app/analytics_api/analytics_api', 'SSH_KEY': None}, {u'skipped': True, u'changed': False}])
==> default:
==> default: TASK: [analytics_api | setup the analytics_api env file] **********************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [analytics_api | add gunicorn configuration file] ***********************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [analytics_api | install application requirements] **********************
==> default: skipping: [localhost] => (item=base.txt)
==> default: skipping: [localhost] => (item=production.txt)
==> default: skipping: [localhost] => (item=optional.txt)
==> default:
==> default: TASK: [analytics_api | migrate] ***********************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [analytics_api | run collectstatic] *************************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [analytics_api | create api users] **************************************
==> default: skipping: [localhost] => (item={'key': 'dummy-api-user', 'value': 'changeme'})
==> default:
==> default: TASK: [analytics_api | write out the supervisor wrapper] **********************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [analytics_api | write supervisord config] ******************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [analytics_api | enable supervisor script] ******************************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [analytics_api | update supervisor configuration] ***********************
==> default: skipping: [localhost]
==> default:
==> default: TASK: [analytics_api | create symlinks from the venv bin dir] *****************
==> default: skipping: [localhost] => (item=python)
==> default: skipping: [localhost] => (item=pip)
==> default: skipping: [localhost] => (item=django-admin.py)
==> default:
==> default: TASK: [analytics_api | create symlinks from the repo dir] *********************
==> default: skipping: [localhost] => (item=manage.py)
==> default:
==> default: TASK: [analytics_api | restart analytics_api] *********************************
==> default: skipping: [localhost]
==> default:
==> default: NOTIFIED: [common | restart ssh] **********************************************
==> default: changed: [localhost]
==> default:
==> default: NOTIFIED: [forum | restart the forum service] *********************************
==> default: skipping: [localhost]
==> default:
==> default: NOTIFIED: [notifier | restart notifier-scheduler] *****************************
==> default: skipping: [localhost]
==> default:
==> default: NOTIFIED: [notifier | restart notifier-celery-workers] ************************
==> default: skipping: [localhost]
==> default:
==> default: PLAY RECAP ********************************************************************
==> default: localhost : ok=334 changed=92 unreachable=0 failed=0
[db@mastodon:~/devstack-test]
% vagrant ssh
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic x86_64)
* Documentation: https://help.ubuntu.com/
New release '14.04.2 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
*******************************************************************
* ___ _ __ __ *
* / _ \ _ __ ___ _ _ ___ __| |\ \/ / *
* | |_| | '_ \ -_) ' \ / -_) _` | > < *
* \___/| .__/___|_|_| \___\__,_|/_/\_\ *
* |_| *
* *
* Instructions and troubleshooting: *
* https://github.com/edx/configuration/wiki/edX-Developer-Stack *
*******************************************************************
Last login: Mon Aug 3 17:55:17 2015 from 10.0.2.2
vagrant@precise64:~$ ls /edx/bin/update
/edx/bin/update
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment