Amazon AMI for XWiki

Last modified by Eduard Moraru on 2022/02/25 09:25

Mentor(s)
Student
Estimated workload

2 man month

Details

Provide an Amazon AMI for XWiki to allow starting XWiki on Amazon EC2 easily.

See also this existing ticket.

The main goal is to offer more ways to distribute XWiki to make it more attractive to all kinds of usages, and thus increase our Active Installs.

Currently, XWiki offers two types of installations for Xwiki Software: One for Demo and one for production See this link. Also, there are two versions available: 12.10.5 which is a stable release, and the other is 13.1 which is up to date and latest.

Currently, Xwiki support HyperSQL, MariaDB, MySQL, Oracle, and Postgres for Database Management. Currently, AWS natively supports MariaDB, MySQL, PostgreSQL, and there's support for a fully managed Database system called Aurora which again natively has compatibility with both Postgres and MySQL. You'd have to deep dive into AWS Resources and see what would be the best way to implement this. You might want to look at RDS and Aurora for the same.

There are 6 ways to install XWiki all of which can be found here. It'll be good to have an AMI for each type of installation. You'll have to create a Launch template and Bootstrap scripts and install the required dependencies on bootup. 

The EC2 instance type can be left out to be chosen by the installer as per their requirements. Considering the long-term maintainability of the AMIs, it'd be nice to have an automated way to update the AMIs when a newer version is released. You can use and look into AWS CDK for managing Infrastructure as a Code so we can keep a check on the work you do as you progress through different phases of GSoC and you'll have to release a working image or version before each phase end. You will also have to document the progress on the wiki. 

Your communication with the community would be one of the significant factors we'd consider while considering your proposals. I do not wish to include lots of details around AMIs here and will let you be creative in choosing your approach towards solving this and would love to see that creativity in your proposals. emoticon_smile

Active
No
Year

2021

Status

Successfully terminated

Progress

Related URLs:
https://jira.xwiki.org/projects/XAWS/summary
https://forum.xwiki.org/t/gsoc-2021-sanchita-singh-sync-up-summaries/8775
https://jira.xwiki.org/browse/XWIKI-3243
https://forum.xwiki.org/t/xwiki-aws-distributions/9090/
Documentation overview: https://www.xwiki.org/xwiki/bin/view/Documentation/AdminGuide/Installation/XWiki%20Installation%20on%20AWS/
user guide for cloudformation template:
https://www.xwiki.org/xwiki/bin/view/Documentation/AdminGuide/Installation/XWiki%20Installation%20on%20AWS/DeploymUser guide for CDK code: ent%20Using%20Cloudformation%20Template/
https://www.xwiki.org/xwiki/bin/view/Documentation/AdminGuide/Installation/XWiki%20Installation%20on%20AWS/Deployment%20Using%20CDK%20Code/
Video guide for CDK: https://drive.google.com/file/d/11kQfOXUb-D8_2vNXHq6NndjQ-pDV_qg-/view?usp=sharing
Video guide for cloudformation template: https://drive.google.com/file/d/1tzQb79UtJFdQTlm3zn3prYAgjwHiJEbW/view?usp=sharing

MILESTONES [Phase 1]:

MILESTONE 1: [7th June-13th June] Creating IaC for running XWiki (Pre-packaged with Jetty servlet container and HSQLDB Database) on EC2 instances by writing launch templates and bootstrapping scripts. [100% complete]

MILESTONE 2: [14th June -20th June] Creating AMIs from the launch template for better distribution [100 % complete]

MILESTONE 3: [21st June -27th June] Writing Packer script for demo install and production install to later scale the AMI in other CC platforms [50% complete]

MILESTONE 4: [28th June- 4th July] Write Stacks for Load Balancers, ECS Service, clusters, RDS Instances and configure them to work in harmony for the running database server and XWiki server separately.[100 % complete]

MILESTONE 5: [5th July- 11th July] Write Infrastructure as code for production-level installs on ECS containers.[100 % complete]

MILESTONE 6: [12th July -16th July] Write Unit tests using @aws-cdk/assert library to write Unit tests for the CDK Code.[100 % complete]

[PHASE 2]

MILESTONE 7: [16th July- 25th July] Documenting the system design for the same and creating a wiki for documentation and a step-by-step guide for running the setup in user AWS accounts.[100 % complete]

MILESTONE 8: [26th July - 1st August] Creating blogs documenting the use of these repositories both from a user perspective and admin perspective for better maintainability and easier to use approach.[100 % complete]

MILESTONE 9: [2nd August- 8th August] For easier management of both repositories/project subdirectories, I’ll be creating an easy to edit config file where admins can change values for linking newer versions of XWiki to AWS.[100 % cpmplete]

MILESTONE 10: [9th August- 15th August] Creating a common Machine Image for running on any virtual machine using Packer so as to provide an easy-to-maintain image that can be used to spin up Demo/Testing installs of XWiki on AWS, GCP, and Azure Virtual machines. [Due to change in plans and issue over ownership of AMI couldn't complete this part]

MILESTONE 11: [16th August-22nd August] Creating videos demonstrating the use of these images to be uploaded to the Youtube channel of XWiki SAS for better marketing, visibility, and reach of the newly available methods of installing XWiki.[100 % complete]

MILESTONE 12: [wish-list]Do performance testing and create Metrics Stack for use with these installations to keep a check on Memory/CPU usage while running XWiki and generate Cloudwatch Alarms on crossing threshold.

DELIVERABLES:

D1: Created AMIs for XWiki production and Demo instance [Done]
D2: CDK code for easy installation of XWiki in users AWS account [Done]
D3: Documentation of the design and how to install XWiki using CDK code into users' account [Done]
D4: Making videos as user guide explaining how to install XWiki in AWS account [Done]
D5: (Not pre-planed in the proposal): making cloudformation template for easy installation in few clicks [Done]

Get Connected