Multi-Tenancy Moodle Deployment Pipeline Development
Budget: $750 – $1,500 USD
Project Purpose
The purpose of this project is to deliver course and training content through the Moodle Learning Management System (LMS). These services will be offered to institutional and corporate clients, enabling them to enroll students or staff in specific academic or professional training programs.
Project Overview
We are seeking a team of DevOps experts to design and implement a robust deployment pipeline for Moodle LMS using Docker, GitHub, and Google Cloud Platform (GCP). The solution will include:
- A centralised Moodle codebase managed in GitHub.
- Environment-specific deployments (e.g., production, staging) on GCP, with the main branch designated for production.
- A multi-tenant architecture where each client has its own database and file storage, while sharing the common (master) codebase and looking up to specified number of master tables relating to courses.
High-Level Requirements and Definitions of Done (DoD)
Docker Setup
Set up Docker using an Ubuntu-based image.
Configure an initial image for first-time Moodle installation.
DoD: Docker image is built and can successfully run a clean Moodle installation.
Moodle Installation and Configuration
- Install Moodle and configure it for repeatable deployments via Docker.
- Decouple the Moodle codebase from databases and file storage.
- Store client-specific databases and Moodle data folders in GCP Cloud Storage or mounted persistent volumes. All configurations are to be managed via a configuration file.
DoD: Docker setup supports repeatable deployments, and separate databases and storage can be configured per client.
Multi-Tenancy Support
Implement support for provisioning client-specific databases and storage.
Ensure isolation between clients while using a shared Moodle codebase.
DoD: Each client can be configured independently, with isolated storage and databases.
Testing and Data Management
Implement and run unit and integration tests for deployments.
Store reusable test data in GCP Cloud Storage with mountable access for test environments.
DoD: Automated tests run successfully in all environments; test data is accessible from GCP.
Local Development Support
- Enable running Moodle locally via Docker for all branches and clients.
- Support client-specific configuration via environment variables or volume mounts.
DoD: Moodle runs successfully on localhost with configurations for different branches and clients.
CI/CD Pipeline Integration
- Configure GitHub for continuous integration and deployment.
- Automate integration test execution and support per-branch deployment workflows.
DoD: Successfully automates testing and deployment for all branches.
GCP Deployment Steps
- Use Google Cloud Deployment Manager or Terraform to automate infrastructure provisioning.
- Deploy Moodle instances to a GCP instance, supporting multi-branch and client-specific configurations.
- Ensure deployments are accessible via load-balanced GCP endpoints.
DoD: GCP infrastructure is provisioned automatically, and Moodle instances are running for each branch/client combination.
Documentation
- Provide complete documentation for each setup and configuration step.
- Include developer notes, deployment instructions, and troubleshooting guidelines.
DoD: Documentation supports end-to-end setup and enables other developers to replicate or troubleshoot all steps.
Submitting your expression of interest
We are keen to receive a summary of the Scope of Work (SoW) statement/plan, outlining how each component will be approached and developed, tested and deployed with a delivery timeline. The project will be managed through a Jira board.
Please respond only if your team has experiences working on Moodle deployments in a dev-ops environments.
The purpose of this project is to deliver course and training content through the Moodle Learning Management System (LMS). These services will be offered to institutional and corporate clients, enabling them to enroll students or staff in specific academic or professional training programs.
Project Overview
We are seeking a team of DevOps experts to design and implement a robust deployment pipeline for Moodle LMS using Docker, GitHub, and Google Cloud Platform (GCP). The solution will include:
- A centralised Moodle codebase managed in GitHub.
- Environment-specific deployments (e.g., production, staging) on GCP, with the main branch designated for production.
- A multi-tenant architecture where each client has its own database and file storage, while sharing the common (master) codebase and looking up to specified number of master tables relating to courses.
High-Level Requirements and Definitions of Done (DoD)
Docker Setup
Set up Docker using an Ubuntu-based image.
Configure an initial image for first-time Moodle installation.
DoD: Docker image is built and can successfully run a clean Moodle installation.
Moodle Installation and Configuration
- Install Moodle and configure it for repeatable deployments via Docker.
- Decouple the Moodle codebase from databases and file storage.
- Store client-specific databases and Moodle data folders in GCP Cloud Storage or mounted persistent volumes. All configurations are to be managed via a configuration file.
DoD: Docker setup supports repeatable deployments, and separate databases and storage can be configured per client.
Multi-Tenancy Support
Implement support for provisioning client-specific databases and storage.
Ensure isolation between clients while using a shared Moodle codebase.
DoD: Each client can be configured independently, with isolated storage and databases.
Testing and Data Management
Implement and run unit and integration tests for deployments.
Store reusable test data in GCP Cloud Storage with mountable access for test environments.
DoD: Automated tests run successfully in all environments; test data is accessible from GCP.
Local Development Support
- Enable running Moodle locally via Docker for all branches and clients.
- Support client-specific configuration via environment variables or volume mounts.
DoD: Moodle runs successfully on localhost with configurations for different branches and clients.
CI/CD Pipeline Integration
- Configure GitHub for continuous integration and deployment.
- Automate integration test execution and support per-branch deployment workflows.
DoD: Successfully automates testing and deployment for all branches.
GCP Deployment Steps
- Use Google Cloud Deployment Manager or Terraform to automate infrastructure provisioning.
- Deploy Moodle instances to a GCP instance, supporting multi-branch and client-specific configurations.
- Ensure deployments are accessible via load-balanced GCP endpoints.
DoD: GCP infrastructure is provisioned automatically, and Moodle instances are running for each branch/client combination.
Documentation
- Provide complete documentation for each setup and configuration step.
- Include developer notes, deployment instructions, and troubleshooting guidelines.
DoD: Documentation supports end-to-end setup and enables other developers to replicate or troubleshoot all steps.
Submitting your expression of interest
We are keen to receive a summary of the Scope of Work (SoW) statement/plan, outlining how each component will be approached and developed, tested and deployed with a delivery timeline. The project will be managed through a Jira board.
Please respond only if your team has experiences working on Moodle deployments in a dev-ops environments.