Azure Software as a Solution for Veeam Backup for Microsoft 365 as a Service
https://www.youtube.com/watch?v=gkfJVJlOcVo
Project Amafu, which means "Clouds" in Zulu, is a SaaS offering that provides an easy-to-use backup solution for Office 365 users. The solution deploys a VSPC server and Veeam Cloud Connect in Azure, along with Veeam Backup for Office 365. It also uses the Microsoft SaaS Accelerator to deploy a web app and create an offer for the Microsoft Marketplace, which includes a landing page and webhook from the Saas Accelerator deployment.
When a customer subscribes to the offer, a logic app is triggered to automatically provision the customer to VSPC with the necessary resources to allow them to backup Microsoft 365. The logic app calls the VSPC API to create a new customer tenant and assigns a Veeam Backup for Office 365 server, storage, and user quota to the tenant. Finally, the logic app sends an email to the customer with the necessary details to access the user interface, including the credentials to log in to the VSPC server and the Veeam Backup for Office 365 allocated tenant.
This solution is a starting point for service providers to build a similar SaaS solution that can protect Office 365 data. The source code for the solution is provided, which can be customized and enhanced by service providers to fit their specific needs. This will help service providers compete with other SaaS providers in the market and provide a valuable service to their customers.
Install.sh
with the appropriate parameters.VCSP-
prefix in split).Triggers when a new email is received and parses the email's body to extract the Company, Email, and Users information.
Gets an authentication token from the specified server and extracts the token from the response body.
Creates a new company on the specified server and extracts the company ID from the response body.
Generates a random password using the specified JavaScript function.
Gets the UID of the specified VCC site and extracts it from the response body.
Assigns the specified VCC site to the specified company on the specified server.
Gets the UID of the specified VBM resource and extracts it from the response body.
Sets up the specified VBM resource for the specified company on the specified server.
Sends a welcome email to the specified email address with the specified password.
This is a JSON object that defines a workflow in Azure Logic Apps. The workflow is triggered by a SQL Server database trigger that executes every 15 seconds, which retrieves newly added items from a table called "Subscriptions". The retrieved data is passed to the Logic App, where it is parsed as JSON data.
Retrieves data from a SQL Server database based on the specified query.
Parses JSON data from the SQL Query and converts it into an array of objects.
Loops through each item in an array of rows and adds then to a Variable array. These are the values from custom landing page fields.
Actions:
Input Parameters:
Initializes a specified variable.
{
"Password": {
"type": "String",
"value": "VSPC PASSWORD"
},
"VB365Server": {
"type": "String",
"value": "VB365 SERVER NAME"
},
"VCCsite": {
"type": "String",
"value": "VCC SITE NAME"
},
"VSPCURL": {
"type": "String",
"value": "VSPC URL"
},
"servername": {
"type": "String",
"value": "VSPC SERVER NAME"
},
"username": {
"type": "String",
"value": "VSPC USERNAME"
}
https://learn.microsoft.com/en-us/azure/logic-apps/create-parameters-workflows
Ian Engelbrecht
http://www.mritsurgeon.co.za/
Twitter @mritsurgeon_ian
https://www.linkedin.com/in/ian-veeam/
This project is licensed under the MIT License.
To install this solution, follow these steps:
./install.sh -r <YourResourceGroupName> \
-l <YourAzureLocation> \
-v <YourVMName1> \
-s <YourVMName2> \
-u <YourVMUsername> \
-p <YourVMPassword> \
-n <YourVNetName> \
-w <YourSubnetName> \
-m <YourLogicAppName> \
-a <YourWebAppNamePrefix> \
-b <YourSQLserverName> \
-e <AdminEmailForAccess>
ian [ ~ ]$ gh repo clone mritsurgeon/VB365-as-a-Service
Cloning into 'VB365-as-a-Service'...
remote: Enumerating objects: 862, done.
remote: Counting objects: 100% (315/315), done.
remote: Compressing objects: 100% (219/219), done.
remote: Total 862 (delta 143), reused 198 (delta 86), pack-reused 547
Receiving objects: 100% (862/862), 216.38 KiB | 6.36 MiB/s, done.
Resolving deltas: 100% (371/371), done.
ian [ ~ ]$ chmod -R u+x VB365-as-a-Service/
ian [ ~ ]$ cd VB365-as-a-Service/Deployment/
ian [ ~/VB365-as-a-Service/Deployment ]$ chmod -R u+x *.sh
ian [ ~/VB365-as-a-Service/Deployment ]$ ./install.sh -r vb365testRSA -l "eastus" -v vm1 -s vm2 -u veeam -p "Veeam@demo123" -n 365 -w logicapp -m mailtrigger -a vbsaas -b vbsaas -e "ian@contoso.com"
To use this solution, follow these steps:
The script expects some input parameters to be passed in when it is executed. Here is a list of the parameters you need to provide:
(these are maintained with the code)
saas_repo
: The URL of the GitHub repository that contains the Commercial Marketplace SaaS Accelerator.image_publisher
: The publisher name for the VM images.image_offer_VSPC
: The offer name for the Veeam Service Provider Console VM image.image_offer_VB365
: The offer name for the Veeam Backup for Office 365 VM image.image_VSPC_sku
: The SKU name for the Veeam Service Provider Console VM image.image_365_sku
: The SKU name for the Veeam Backup for Office 365 VM image.(These are set by the user, but used more than once throughout the scripts)
ResourceGroupForDeployment
: The name of the resource group in which to deploy the solution.Location
: The Azure region in which to deploy the solution.(These are set by the user, but specific to creating 2 VMs)
vb365_vm_name
: The name of the virtual machine for Veeam Backup for Office 365.vspc_vm_name
: The name of the virtual machine for Veeam Service Provider Console.vm_username
: The administrator username for the virtual machines.vm_password
: The administrator password for the virtual machines.vnet_name
: The name of the virtual network in which to deploy the virtual machines.subnet_name
: The name of the subnet in which to deploy the virtual machines.(These are set by the user, but specific to creating Logic App & deploying MS SaaS accelerator)
logic_app_name
: The name of the Logic App workflow.WebAppNamePrefix
: The prefix of the name of the Web App.SQLServerName
: The name of the SQL Server.PublisherAdminUsers
: The email address of the administrator to add as a Publisher admin.These parameters allow you to customize the deployment of the solution to fit your specific needs.