Project Martini: what, why and how?
When VeeamON 2019 CFP opened up, I decided to team up with Timothy
While we were creating the content, we came up with the idea of creating a community tool to assist with those requests and questions.
What is it?
Project Martini is a bit hard to describe if I’m honest. Timothy describes it “A kind of Manager of Manager for Veeam Backup for Microsoft Office 365“, personally I would describe it as an “Additional helpdesk and central management feature for Veeam Backup for Microsoft Office 365“.
In general it is a central management solution which provides the following features:
- Deploy Veeam Backup for Microsoft Office 365 servers
- By using Terraform in the background
- Overview per tenant / GEO location
- Licensing
- Infrastructure
- API driven approach
- Web-based interface
- General overview
- Self-service restore capabilities per tenant / GEO
- Command line available (for die-hards)
- Multi-tenant design
- Every tenant can login and see their own infrastructure and perform restores
When we started with it, our goal was simple. Creation a solution when you are managing multiple instances to have a general overview on consumed licenses, backup jobs and general infrastructure per Veeam Backup for Microsoft Office 365 installation. However as we moved forward, more things got added quickly.
It is mostly
Project Martini runs on a Linux server and from there you can add existing installations or use the Terraform part for automatic deployment (the first release support AWS in a basic form). Timothy already wrote an installation blog so if you’re eager to give it a try, have a look at his post.
Why did we create it?
While talking with customers and service providers, we came to the conclusion there was a need for this. We’ve had requests for integration with the Veeam Availability Console, Veeam Backup & Replication’s Enterprise Manager or “something else“. While we always provide the feedback to the product management team within Veeam, we felt it would be a good project to see what can be done by using the default API’s.
A full explanation on the why is available in the VeeamON recording around 20 minutes in.
How does it work?
In general, Project Martini is running in a Linux virtual machine which can run anywhere. It exists out of 3 things:
- A web interface (made by me)
- A command line (made by Timothy) – also used for the installation
- A basic API for 3rd party integrations (made by Timothy for the command line)
If you look at the above image, it gives you an overview of how it will work. Once you have installed Project Martini, you have to possibility of adding existing installations or deploy a new one. Everything is done via RESTful API calls from the Martini instance to the remote installations. Therefore everything goes via 1 port (default: 4443) and you can modify this as you want.
The good thing about the way we designed Project Martini is the fact that we made it multi-tenant. This allows you once logged in to add a tenant (or see it as a GEO based location if you are a regular company) and provide a separate login for them. This is perfect for service providers who want to give out logins for those with multiple Veeam Backup for Microsoft Office 365 installations as well as companies with multiple installations based on for example GEO location or company policies (helpdesk mode).
The difference between the admin view and the tenant view based upon instances can be seen in the following screenshots.
As you can see the example above has 2 tenants each with their own instance(s).
A tenant, however, will only see what is related to them. In the example above, only 2 instances are available.
Something extra: API love
Since we love API’s, we have added a basic API which is available via “/
- Add tenants
- Add and deploy instances
- View backup jobs per instance (or all at once)
- View license usage per instance (or all at once)
To show the use case of this, the command line (martini-cli), has all these options available as Timothy explains in his blogpost.
Another extra: automatic deployment
As mentioned in the feature list, it is possible to deploy tenants automatically via Terraform. This is done via a scheduler which should run as a crontab however it is not enabled by default due the fact you may not need this feature. Before you can use it, you need to go over the configuration page to setup the whole AWS part first. I will make a more in-depth blog post about this later where I will also dig deeper on how you can deploy Veeam Backup for Microsoft Office 365 via Terraform (in case you want to do this yourself).
Why the name “Martini”?
When we came up with the project idea, we were thinking of a name. Since we would present it at VeeamON Miami we thought about calling it “Project Miami“. We figured we could use the letters as an acronym and go with it, however we couldn’t make it work so we tried other options such as “Project Cocktail“. In the end “Martini” worked (in a way).
Closing note
A few things are
- This is NOT an official Veeam product. We made this as a community tool so the only support you can get is via us by contacting us directly or using GitHub.
- Project Martini is licensed under the MIT license
- Feedback is appreciated so we can improve it
All in all Timothy and I had great fun creating this community solution, making the presentation and showing it for the first time at VeeamON.
As a final note: in case you want to know how much time we put into it. In about 75 days we went from a concept to a v1 release.