Commit 0f3b02d4 by Ned Batchelder

Eucalyptus upgrade.sh

parent 07c53064
...@@ -3,28 +3,44 @@ ...@@ -3,28 +3,44 @@
# Stop if any command fails # Stop if any command fails
set -e set -e
# Logging: write all the output to a timestamped log file.
sudo mkdir -p /var/log/edx
exec > >(sudo tee /var/log/edx/upgrade-$(date +%Y%m%d-%H%M%S).log) 2>&1
# defaults # defaults
CONFIGURATION="none" CONFIGURATION="none"
TARGET="none" TARGET="none"
INTERACTIVE=true INTERACTIVE=true
OPENEDX_ROOT="/edx" OPENEDX_ROOT="/edx"
# Use this function to exit the script: it helps keep the output right with the
# exec-logging we started above.
exit_cleanly () {
sleep .25
echo
exit $@
}
show_help () { show_help () {
cat <<- EOM cat << EOM
Migrates your Open edX installation to a different release. Upgrades your Open edX installation to a newer release.
-c CONFIGURATION -c CONFIGURATION
Use the given configuration. Either \"devstack\" or \"fullstack\". You Use the given configuration. Either "devstack" or "fullstack". You
must specify this. must specify this.
-t TARGET -t TARGET
Migrate to the given git ref. You must specify this. Named releases are Upgrade to the given git ref. You must specify this. Named releases are
called \"named-release/cypress\", \"named-release/dogwood.rc2\", and so on. called "named-release/cypress", "named-release/dogwood.rc2", and so on.
-y -y
Run in non-interactive mode (reply \"yes\" to all questions) Run in non-interactive mode (reply "yes" to all questions)
-r OPENEDX_ROOT -r OPENEDX_ROOT
The root directory under which all Open edX applications are installed. The root directory under which all Open edX applications are installed.
Defaults to \"$OPENEDX_ROOT\" Defaults to "$OPENEDX_ROOT"
-h -h
Show this help and exit. Show this help and exit.
...@@ -36,7 +52,7 @@ while getopts "hc:t:y" opt; do ...@@ -36,7 +52,7 @@ while getopts "hc:t:y" opt; do
case "$opt" in case "$opt" in
h) h)
show_help show_help
exit 0 exit_cleanly 0
;; ;;
c) c)
CONFIGURATION=$OPTARG CONFIGURATION=$OPTARG
...@@ -59,14 +75,14 @@ confirm_proceed () { ...@@ -59,14 +75,14 @@ confirm_proceed () {
read input read input
if [[ "$input" != "yes" && "$input" != "y" ]]; then if [[ "$input" != "yes" && "$input" != "y" ]]; then
echo "Quitting" echo "Quitting"
exit 1 exit_cleanly 1
fi fi
} }
# Check we are in the right place, and have the info we need. # Check we are in the right place, and have the info we need.
if [[ ! -d /edx/app/edxapp ]]; then if [[ ! -d ${OPENEDX_ROOT}/app/edxapp ]]; then
echo "Run this on your Open edX machine." echo "Run this on your Open edX machine."
exit 1 exit_cleanly 1
fi fi
if [[ $TARGET == none ]]; then if [[ $TARGET == none ]]; then
...@@ -76,12 +92,12 @@ you are currently running. This script can only move forward one release at ...@@ -76,12 +92,12 @@ you are currently running. This script can only move forward one release at
a time. a time.
EOM EOM
show_help show_help
exit 1 exit_cleanly 1
fi fi
if [[ $CONFIGURATION == none ]]; then if [[ $CONFIGURATION == none ]]; then
echo "You must specify a configuration, either fullstack or devstack." echo "You must specify a configuration, either fullstack or devstack."
exit 1 exit_cleanly 1
fi fi
APPUSER=edxapp APPUSER=edxapp
...@@ -148,7 +164,7 @@ if [[ $TARGET == *cypress* ]] ; then ...@@ -148,7 +164,7 @@ if [[ $TARGET == *cypress* ]] ; then
sudo -u forum git -C ${OPENEDX_ROOT}/app/forum/.rbenv reset --hard sudo -u forum git -C ${OPENEDX_ROOT}/app/forum/.rbenv reset --hard
fi fi
if [[ -f /edx/app/edx_ansible/server-vars.yml ]]; then if [[ -f ${OPENEDX_ROOT}/app/edx_ansible/server-vars.yml ]]; then
SERVER_VARS="--extra-vars=\"@${OPENEDX_ROOT}/app/edx_ansible/server-vars.yml\"" SERVER_VARS="--extra-vars=\"@${OPENEDX_ROOT}/app/edx_ansible/server-vars.yml\""
fi fi
...@@ -189,7 +205,7 @@ EOF ...@@ -189,7 +205,7 @@ EOF
mongo cs_comments_service migrate-008-context.js mongo cs_comments_service migrate-008-context.js
# We are upgrading Python from 2.7.3 to 2.7.10, so remake the venvs. # We are upgrading Python from 2.7.3 to 2.7.10, so remake the venvs.
sudo rm -rf /edx/app/*/v*envs/* sudo rm -rf ${OPENEDX_ROOT}/app/*/v*envs/*
echo "Upgrading to the end of Django 1.4" echo "Upgrading to the end of Django 1.4"
cd configuration/playbooks/vagrant cd configuration/playbooks/vagrant
...@@ -209,7 +225,7 @@ EOF ...@@ -209,7 +225,7 @@ EOF
make_config_venv make_config_venv
# Need to get rid of South from edx-platform, or things won't work. # Need to get rid of South from edx-platform, or things won't work.
sudo -u edxapp /edx/bin/pip.edxapp uninstall -y South sudo -u edxapp ${OPENEDX_ROOT}/bin/pip.edxapp uninstall -y South
echo "Upgrading to the beginning of Django 1.8" echo "Upgrading to the beginning of Django 1.8"
cd configuration/playbooks/vagrant cd configuration/playbooks/vagrant
...@@ -226,19 +242,53 @@ EOF ...@@ -226,19 +242,53 @@ EOF
echo "Running the Django 1.8 faked migrations" echo "Running the Django 1.8 faked migrations"
for item in lms cms; do for item in lms cms; do
sudo -u $APPUSER -E /edx/bin/python.edxapp \ sudo -u $APPUSER -E ${OPENEDX_ROOT}/bin/python.edxapp \
/edx/bin/manage.edxapp $item migrate --settings=aws --noinput --fake-initial ${OPENEDX_ROOT}/bin/manage.edxapp $item migrate --settings=aws --noinput --fake-initial
done done
if [[ $CONFIGURATION == fullstack ]] ; then if [[ $CONFIGURATION == fullstack ]] ; then
sudo -u xqueue \ sudo -u xqueue \
SERVICE_VARIANT=xqueue \ SERVICE_VARIANT=xqueue \
/edx/app/xqueue/venvs/xqueue/bin/python \ ${OPENEDX_ROOT}/app/xqueue/venvs/xqueue/bin/python \
/edx/app/xqueue/xqueue/manage.py migrate \ ${OPENEDX_ROOT}/app/xqueue/xqueue/manage.py migrate \
--settings=xqueue.aws_settings --noinput --fake-initial --settings=xqueue.aws_settings --noinput --fake-initial
fi fi
fi fi
# Eucalyptus details
if [[ $TARGET == *eucalyptus* ]] ; then
echo "Uninstall edx-oauth2-provider"
sudo -u edxapp ${OPENEDX_ROOT}/bin/pip.edxapp uninstall --disable-pip-version-check -y django-oauth2-provider edx-oauth2-provider
if [[ $CONFIGURATION == devstack ]] ; then
echo "Remove old Firefox"
sudo apt-get purge -y firefox
fi
echo "Upgrade the code"
cd configuration/playbooks/vagrant
sudo ansible-playbook \
--inventory-file=localhost, \
--connection=local \
$SERVER_VARS \
--extra-vars="edx_platform_version=$TARGET" \
--extra-vars="xqueue_version=$TARGET" \
--extra-vars="migrate_db=no" \
--skip-tags="edxapp-sandbox,gather_static_assets" \
vagrant-$CONFIGURATION-delta.yml
cd ../../..
echo "Migrate to fix oauth2_provider"
${OPENEDX_ROOT}/bin/edxapp-migrate-lms --fake oauth2_provider zero
${OPENEDX_ROOT}/bin/edxapp-migrate-lms --fake-initial
echo "Clean up forums Ruby detritus"
sudo rm -rf ${OPENEDX_ROOT}/app/forum/.rbenv ${OPENEDX_ROOT}/app/forum/.gem
fi
# Update to target.
echo "Updating to final version of code" echo "Updating to final version of code"
cd configuration/playbooks cd configuration/playbooks
echo "edx_platform_version: $TARGET" > vars.yml echo "edx_platform_version: $TARGET" > vars.yml
...@@ -254,13 +304,15 @@ sudo ansible-playbook \ ...@@ -254,13 +304,15 @@ sudo ansible-playbook \
vagrant-$CONFIGURATION.yml vagrant-$CONFIGURATION.yml
cd ../.. cd ../..
# Post-upgrade work.
if [[ $TARGET == *dogwood* ]] ; then if [[ $TARGET == *dogwood* ]] ; then
echo "Running data fixup management commands" echo "Running data fixup management commands"
sudo -u $APPUSER -E /edx/bin/python.edxapp \ sudo -u $APPUSER -E ${OPENEDX_ROOT}/bin/python.edxapp \
/edx/bin/manage.edxapp lms --settings=aws generate_course_overview --all ${OPENEDX_ROOT}/bin/manage.edxapp lms --settings=aws generate_course_overview --all
sudo -u $APPUSER -E /edx/bin/python.edxapp \ sudo -u $APPUSER -E ${OPENEDX_ROOT}/bin/python.edxapp \
/edx/bin/manage.edxapp lms --settings=aws post_cohort_membership_fix --commit ${OPENEDX_ROOT}/bin/manage.edxapp lms --settings=aws post_cohort_membership_fix --commit
# Run the forums migrations again to catch things made while this script # Run the forums migrations again to catch things made while this script
# was running. # was running.
...@@ -269,4 +321,4 @@ fi ...@@ -269,4 +321,4 @@ fi
cd / cd /
sudo rm -rf $TEMPDIR sudo rm -rf $TEMPDIR
echo "Migration complete. Please reboot your machine." echo "Upgrade complete. Please reboot your machine."
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment