Skip navigation

Autoscalable Mahara on Azure

Last updated: 27/05/2018

Deploys an autoscaling Mahara cluster with configurable Azure MySQL/Postgres and Elasticsearch. Can be configured for very small or very large sites. Deploys frontend components to a private network with a jumphost to access nodes. Requires keyed SSH access.

This Azure Resource Manager (ARM) template was created by a member of the community and not by Microsoft. Each ARM template is licensed to you under a licence agreement by its owner, not Microsoft. Microsoft is not responsible for ARM templates provided and licensed by community members and does not screen for security, compatibility or performance. Community ARM templates are not supported under any Microsoft support programme or service, and are made available AS IS without warranty of any kind.

Parameters

Parameter Name Description
_artifactsLocation The base URI where artifacts required by this template are located. When the template is deployed using the accompanying scripts, a private location in the subscription will be used and this value will be automatically generated.
_artifactsLocationSasToken The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated.
applyScriptsSwitch Switch to process or bypass all scripts/extensions
location Location for all resources
azureBackupSwitch Switch to configure AzureBackup and enlist VM's
vnetGwDeploySwitch Switch to deploy a virtual network gateway or not
htmlLocalCopySwitch Switch to create a local copy of /mahara/html or not
httpsTermination Indicates where https termination occurs. 'VMSS' is for https termination at the VMSS instance VMs (using nginx https proxy). 'None' is for testing only with no https. 'None' may not be used with a separately configured https termination layer. If you want to use the 'None' option with your separately configured https termination layer, you'll need to update your Mahara config.php manually for $cfg->wwwroot and $cfg->sslproxy.
siteURL URL for Mahara site
maharaVersion The Mahara version you want to install.
sshPublicKey ssh public key
sshUsername ssh user name
controllerVmSku VM size for the controller VM
webServerType Web server type
autoscaleVmSku VM size for autoscaled web VMs
autoscaleVmCount Maximum number of autoscaled web VMs
dbServerType Database type
dbLogin Database admin username
mysqlPgresVcores MySql/Postgresql vCores. For Basic tier, only 1 & 2 are allowed. For GeneralPurpose tier, 2, 4, 8, 16, 32 are allowed. For MemoryOptimized, 2, 4, 8, 16 are allowed.
mysqlPgresStgSizeGB MySql/Postgresql storage size in GB. Minimum 5GB, increase by 1GB, up to 1TB (1024 GB)
mysqlPgresSkuTier MySql/Postgresql sku tier
mysqlPgresSkuHwFamily MySql/Postgresql sku hardware family
mysqlVersion Mysql version
postgresVersion Postgresql version
sslEnforcement MySql/Postgresql SSL connection
fileServerType File server type: GlusterFS, NFS--not yet highly available. Gluster uses premium managed disks therefore premium skus are required.
fileServerDiskSize Size per disk for gluster nodes or nfs server
fileServerDiskCount Number of disks in raid0 per gluster node or nfs server
glusterVmSku VM size for the gluster nodes
keyVaultResourceId Azure Resource Manager resource ID of the Key Vault in case you stored your SSL cert in an Azure Key Vault (Note that this Key Vault must have been pre-created on the same Azure region where this template is being deployed). Leave this blank if you didn't. Resource ID example: /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/xxx/providers/Microsoft.KeyVault/vaults/yyy. This value can be obtained from keyvault.sh output if you used the script to store your SSL cert in your Key Vault.
sslCertKeyVaultURL Azure Key Vault URL for your stored SSL cert. This value can be obtained from keyvault.sh output if you used the script to store your SSL cert in your Key Vault. This parameter is ignored if the keyVaultResourceId parameter is blank.
sslCertThumbprint Thumbprint of your stored SSL cert. This value can be obtained from keyvault.sh output if you used the script to store your SSL cert in your Key Vault. This parameter is ignored if the keyVaultResourceId parameter is blank.
caCertKeyVaultURL Azure Key Vault URL for your stored CA (Certificate Authority) cert. This value can be obtained from keyvault.sh output if you used the script to store your CA cert in your Key Vault. This parameter is ignored if the keyVaultResourceId parameter is blank.
caCertThumbprint Thumbprint of your stored CA cert. This value can be obtained from keyvault.sh output if you used the script to store your CA cert in your Key Vault. This parameter is ignored if the keyVaultResourceId parameter is blank.
storageAccountType Storage Account type
searchType options of mahara global search
elasticVmSku VM size for the elastic search nodes
vNetAddressSpace Address range for the Mahara virtual network - presumed /16 - further subneting during vnet creation
gatewaySubnet name for Virtual network gateway subnet
gatewayType Virtual network gateway type
vpnType Virtual network gateway vpn type

Use the template

PowerShell

New-AzureRmResourceGroupDeployment -Name <deployment-name> -ResourceGroupName <resource-group-name> -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mahara-autoscale-cache/azuredeploy.json
Installing and configuring Azure PowerShell

Command line

azure config mode arm
azure group deployment create <my-resource-group> <my-deployment-name> --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mahara-autoscale-cache/azuredeploy.json
Installing and configuring the Azure cross-platform command-line interface