Xmigrate is an opensource cloud migration project. Xmigrate aims to achieve the portability of VM’s across any public cloud. If you look at the case of containers, it’s famous for its portability. Once a container image is built, it can run on any K8s cluster, EKS, AKS, GKE, Openshift etc. No matter who is the vendor.
What problem we are solving?
A VM which you create in the public cloud will have tight integrations to the underlying hardware. And all the vendors use different virtualization technology. They have their own tools for doing the assessment and migration. None of them comes for free and supports migration to all clouds, each vendor’s tool only supports migration/assessment of servers or applications which needs to be migrated to their cloud.
Xmigrate aims to help you to move your server, which is deployed in any X environment to Y public cloud platform. Here X can be on-prem or public cloud vendors like AWS, Azure, GCP etc and Y can be a public cloud platform.
How does it work?
All the public cloud providers provide functionalities to import the image of a server, either in RAW, VMDK or in VHD format. Also, each vendor has some pre-requisites, to install some packages, update the kernel etc before creating the server image. Xmigrate does everything for you.
- Run xmigrate application on your laptop or a server which has connectivity to the VM which needs to be migrated and to the cloud environment which the VM is getting migrated
- Xmigrate stores all the metadata and other information to MongoDB
- Xmigrate connects to the VM which needs to be migrated and prepare it with the required pre-requisites
- Once the pre-requisites are met, xmigrate push the image in RAW format to AWS S3 bucket directly from the VM
- Xmigrate triggers AMI creation by calling AWS import-image API after the image is fully uploaded
- Then xmigrate will make AWS API calls to build the network components
- And finally, xmigrate call AWS API’s to create an instance from the AMI created in the 5th step
The tech stack
Things are easier if we look at a problem as a group of many small problems. That’s how we made this solution. We didn’t make any inventions but stitched together multiple technologies/tools to work together to solve the problem holistically. Below are the underlying tools and technologies we used,
- Ansible: To prepare and create RAW image of the server which needs to be migrated
- Python: All the REST API’s are written in python3.7 with Quart framework and async support
- MongoDB: It stores all the metadata about servers, details of users, projects etc
- ReactJS: xmigrate dashboard is built with ReactJS
Things need to be done
There are many more things to be completed and tested to call xmigrate a production-ready software.
- Multiple OS flavours need to be supported
- Migration of VM’s with multiple disks
- Migration of VM’s to GCP
- Management of cloud resources created with xmigrate
- Bandwidth control during the migration process
Even though there are many things to be completed to make it a finished product, we have done the public announcement. It’s not for you to start using xmigrate, but to start contributing to xmigrate.
How you can contribute to xmigrate?
If you are a DevOps specialist who is really good at writing Ansible playbooks, you can contribute to xmigrate by writing playbooks to prepare and migrate the server by installing the packages and making other pre-requisites.
If you are a Python developer, if you find any bugs or issues either by yourself or reported by someone, please be happy to fix it and make a PR.
If you are Frontend Developer skilled in ReactJS, please create a PR which improves the UI/UX of xmigrate.
So let’s start contributing to xmigrate and make it a wonderful OSS.
Once again thanks to everyone for reading and supporting us.