This document describes the steps required to migrate from a native installation (using Ansible scripts) to a Tutor deployment of the Open edX platform.
This document will outline steps for:
Single instance installation
Not using external services for MongoDB and MySQL running on the same VM
Migrate to the same Open edX version
For any specific use case, feel free to ask questions in the tutor forum. |
Identify tutor plugins that you need based on the Open edX services that you use.
Backup data from your native installation.
Install tutor and the different plugins you need
Customise your tutor instance to match your native configuration
(Optional) Maintain your tutor instance
First, make a list of services that your Open edX instance rely on. The native installation script installs a lot of services (e.g. edx-analytics-api by default but unless you configured them you probably don’t need them.
Here is a list of officially supported plugins.
If you can’t find your service in this list you have two options:
Search or ask in the tutor forum. Someone may have already created a tutor plugin for the service you are looking for.
Create your custom plugin to deploy and configure the service you want to use.
Use your preferred method to export the MySQL and MongoDB data of your native installation.
Here is an example backup script if you need some guidance. |
Unless you configured your Open edX instance to use a distributed storage system (e.g. S3), you will need to take a copy of your /edx/var/edxapp/media
folder.
Follow the installation instructions in the documentation to install Tutor.
Move your export of MongoDB and MySQL databases to your new instance.
By default in Tutor, the name of the edx-platform service database is openedx
while it’s called edxapp
in the native installation. You have two options:
(Recommended) Edit your MySQL dump file:
Add DROP DATABASE openedx;
to the SQL file above the CREATE DATABASE
line.
Change CREATE DATABASE /*!32312 IF NOT EXISTS*/
edxapp /*!40100 DEFAULT CHARACTER SET utf8 */;
to CREATE DATABASE /*!32312 IF NOT EXISTS*/
openedx /*!40100 DEFAULT CHARACTER SET utf8 */;
Change USE
edxapp;
to USE
openedx;
Set OPENEDX_MYSQL_DATABASE: edxapp
in your $(tutor config printroot)/config.yml
file. If you are using an external database provider, you should set the following
OPENEDX_MYSQL_DATABASE: edxapp OPENEDX_MYSQL_PASSWORD: <mysql_password> OPENEDX_MYSQL_USERNAME: edxapp001 |
Run the following command to restore your data
docker exec -i tutor_local_mysql_1 sh -c 'exec mysql -uroot -p"MYSQL_ROOT_PASSWORD"' < /home/user/mysql-data-20210504T110001.sql |
You can find your MYSQL_ROOT_PASSWORD
using tutor config printvalue MYSQL_ROOT_PASSWORD
.
Copy your MongoDB backup to $TUTOR_ROOT/data/mongodb
.
Run tutor local exec mongodb bash
.
Run mongorestore -d openedx /data/db/edxapp/
.
Remove the export rm -r /data/db/edxapp
.
Copy the content from /edx/var/edxapp/media
to $TUTOR_ROOT/data/openedx-media
.
The following steps are for guidance only, make sure they are suitable for your use case. |
Tutor takes care of the configuration of the different services. For a service like discovery, it includes configuring the site, the partners and the OAuth clients. Unless you have a particular use case, the easiest way forward is to let Tutor handle the initialisation of the services as this makes upgrading to different Open edX release versions easier.
Install and enable the discovery plugin.
Skip the initialisation step and start the discovery service with tutor local start discovery -d
.
Navigate to the discovery admin panel, and delete (in that order) any partners (Core > Partners) and then your site (Sites > sites).
Navigate to the LMS admin panel and delete the existing OAuth clients related to discovery.
Turn off the discovery service with tutor local stop discovery
.
Initialise the service tutor local init -l discovery
.
Identify whether there is value in config.yml
Find the patch
it's better if settings are defined directly in the python modules, to avoid code indirections.
name: myplugin version: 0.1.0 patches: openedx-common-settings: | LOGO_URL = "<URL_TO_LOGO>" LOGO_URL_PNG = "<URL_TO_LOGO_PNG>" openedx-lms-production-settings: | PROFILE_IMAGE_SECRET_KEY = '<KEY>' |
To be able to use the profile images that you’ve copied from you media folder, you need to copy the PROFILE_IMAGE_SECRET_KEY
setting from your native configuration in the openedx-lms-production-settings
patch.
To be able to use the profile images that you’ve copied from you media folder, you need to copy the PROFILE_IMAGE_SECRET_KEY
setting from your native configuration in the openedx-lms-production-settings
patch.
(Test it!)
https://github.com/lpm0073/edx.scripts/blob/master/tutor/tutor.backup.sh
Migrating from Native Install to Tutor (juniper -> tutor 10.x)