зеркало из https://github.com/Azure/Moodle.git
Merge pull request #278 from rishky-msft/master
Adding mysql flexible server database type
This commit is contained in:
Коммит
635c8abfb5
24
README.md
24
README.md
|
@ -22,12 +22,12 @@ Below are a list of pre-defined/restricted deployment options based on typical d
|
|||
|
||||
| Deployment Type | Description | Launch |
|
||||
| --- | --- | ---
|
||||
| Minimal | This deployment will use NFS, Microsoft SQL, and smaller autoscale web frontend VM sku (1 core) that'll give faster deployment time (less than 30 minutes) and requires only 2 VM cores currently that'll fit even in a free trial Azure subscription.|[![Deploy to Azure Minimally](http://azuredeploy.net/deploybutton.png)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FMoodle%2Fmaster%2Fazuredeploy-minimal.json)
|
||||
| Small to Mid-Size | Supporting up to 1000 concurrent users. This deployment will use NFS (no high availability) and MySQL (8 vCores), without other options like elastic search or redis cache.|[![Deploy to Azure Minimally](http://azuredeploy.net/deploybutton.png)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FMoodle%2Fmaster%2Fazuredeploy-small2mid-noha.json)
|
||||
|Large size deployment (with high availability)| Supporting more than 2000 concurrent users. This deployment will use Gluster (for high availability, requiring 2 VMs), MySQL (16 vCores) and redis cache, without other options like elastic search. |[![Deploy to Azure Minimally](http://azuredeploy.net/deploybutton.png)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FMoodle%2Fmaster%2Fazuredeploy-large-ha.json)
|
||||
| Maximum |This maximal deployment will use Gluster (for high availability, adding 2 VMs for a Gluster cluster), MySQL with highest SKU, redis cache, elastic search (3 VMs), and pretty large storage sizes (both data disks and DB).|[![Deploy to Azure Maximally](http://azuredeploy.net/deploybutton.png)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FMoodle%2Fmaster%2Fazuredeploy-maximal.json)
|
||||
| Minimal | This deployment will use NFS, Azure Database for MySQL Flexible Server (Burstable SKU 2 vCores), and smaller autoscale web frontend VM sku (1 core) that'll give faster deployment time (less than 30 minutes) and requires only 2 VM cores currently that'll fit even in a free trial Azure subscription.|[![Deploy to Azure Minimally](http://azuredeploy.net/deploybutton.png)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FMoodle%2Fmaster%2Fazuredeploy-minimal.json)
|
||||
| Small to Mid-Size | Supporting up to 1000 concurrent users. This deployment will use NFS (no high availability) and Azure Database for MySQL Flexible Server(General Purpose SKU 8 vCores), without other options like elastic search or redis cache.|[![Deploy to Azure Minimally](http://azuredeploy.net/deploybutton.png)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FMoodle%2Fmaster%2Fazuredeploy-small2mid-noha.json)
|
||||
|Large size deployment (with high availability)| Supporting more than 2000 concurrent users. This deployment will use Gluster (for high availability, requiring 2 VMs), Azure Database for MySQL Flexible Server (General Purpose SKU 16 vCores) and redis cache, without other options like elastic search. |[![Deploy to Azure Minimally](http://azuredeploy.net/deploybutton.png)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FMoodle%2Fmaster%2Fazuredeploy-large-ha.json)
|
||||
| Maximum |This maximal deployment will use Gluster (for high availability, adding 2 VMs for a Gluster cluster), Azure Database for MySQL (Business Critical SKU 64 vCores), redis cache, elastic search (3 VMs), and pretty large storage sizes (both data disks and DB).|[![Deploy to Azure Maximally](http://azuredeploy.net/deploybutton.png)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FMoodle%2Fmaster%2Fazuredeploy-maximal.json)
|
||||
|
||||
NOTE: Depending on the region you choose to deploy the stack in - the deployment might fail due to SKUs being hardcoded in the template where they are not available. For example, today our small-mid-size deployment option hard codes Gen-4 Azure MySQL SKUs into the template, and if a region where that is currently not available in (i.e. westus2) is used, your deployment will fail. If your deployment fails, please revert to the fully configurable template where possible and change the SKU paramater to one that exists in your region (i.e. Gen-5) or alternatively change your deployment region to one in which the SKU is available (i.e. southcentralus).
|
||||
**NOTE**: The above deployment templates use hard coded Azure Database for MySQL Flexible Server SKUs for easier configuration and quicker deployment of Moodle workloads. If your deployment fails for any reason, please revert to the fully configurable template where possible and change the Azure Database for MySQL Flexible Server parameters accordingly.
|
||||
|
||||
## Fully Configurable
|
||||
|
||||
|
@ -35,6 +35,8 @@ If you would prefer to configure the deployment right at the start of the proces
|
|||
|
||||
[![Deploy to Azure Fully Configurable](http://azuredeploy.net/deploybutton.png)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FMoodle%2Fmaster%2Fazuredeploy.json) [![Visualize](https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/1-CONTRIBUTION-GUIDE/images/visualizebutton.png)](http://armviz.io/#/?load=https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2FMoodle%2Fmaster%2Fazuredeploy.json)
|
||||
|
||||
**NOTE**: Before you deploy your Moodle workloads using a fully configurable template, we suggest reviewing [Azure Database for MySQL Flexible Server](https://learn.microsoft.com/en-us/azure/mysql/flexible-server/) documentation to fully understand the parameters and the options suggested in the parameters to pick the right values for your workload needs.
|
||||
|
||||
## Stack Architecture
|
||||
|
||||
This template set deploys the following infrastructure core to your Moodle instance:
|
||||
|
@ -81,7 +83,7 @@ The template is highly configurable. Full details of the configuration options c
|
|||
|
||||
**Moodle PHP Code** The Moodle PHP code is stored on the Controller VM and copied to each front end VM upon deployment and upon request (should you update the Moodle code with your own code). For more information see our [management documentation](https://github.com/Azure/Moodle/blob/master/docs/Manage.md#updating-moodle-codesettings).
|
||||
|
||||
**Database** Currently the best performance is achieved with [Azure Database for MySQL](https://azure.microsoft.com/en-us/services/mysql/) and [Azure SQL Database](https://azure.microsoft.com/en-us/services/sql-database/). With [Azure Database for PostgreSQL](https://azure.microsoft.com/en-us/services/postgresql/) we have hit database constraints which caused processes to load up on the frontends until they ran out of memory. It is possible some PostgreSQL tuning might help here. At this stage Azure Database for MySQL and PostgreSQL do not support being moved to a vnet. As a workaround, we use a firewall-based IP restriction allow access only to the controller VM and VMSS load-balancer IPs.
|
||||
**Database** Currently the best performance is achieved with [Azure Database for MySQL](https://azure.microsoft.com/en-us/services/mysql/) and [Azure SQL Database](https://azure.microsoft.com/en-us/services/sql-database/). With [Azure Database for PostgreSQL](https://azure.microsoft.com/en-us/services/postgresql/) we have hit database constraints which caused processes to load up on the frontends until they ran out of memory. It is possible some PostgreSQL tuning might help here. Above pre-configured deployment templates deploy Azure Database for MySQL Flexible Server in a VNet. For configuring Azure Database for MySQL Flexible Server outside a VNet to use firewall-based IP restriction, please use the fully configurable template.
|
||||
|
||||
**File Storage** There are two options for file storage (moodledata) - Gluster FS and NFS. The Gluster FS solution is replicated thus provides highler availability, but incurs additional cost (2 x VMs) and some performance penalties (we are exploring ways to improve this and would welcome contributions from people who know Moodle and/or Gluster). NFS is highly performant and utilizes an existing VM in the cluster (so lower cost), but it is a single point of failure. At the time of writing there is no simple way to switch from one to the other depending on expected workloads and availability requirements, again this is something we would love to see resolved.
|
||||
|
||||
|
@ -92,13 +94,13 @@ The template is highly configurable. Full details of the configuration options c
|
|||
**Regions.** Note that not all resources types (such as databases) may be available in your region. You should check the list of [Azure Products by Region](https://azure.microsoft.com/en-us/global-infrastructure/services/) to for local availability.
|
||||
|
||||
## Common questions about this Template
|
||||
1. **Is this template Moodle as IaaS or PaaS?** While the current template leverages PaaS services such as Redis, MySQL, Postgres, MS SQL etc. the current template offers Moodle as IaaS. Given limitations to Moodle our focus is IaaS for the time being however we would love to be informed of your experience running Moodle as PaaS on Azure (i.e. using [Azure Container Service](https://azure.microsoft.com/en-us/services/container-service/) or [Azure App Service](https://azure.microsoft.com/en-us/services/container-service/)).
|
||||
1. **Is this template Moodle as IaaS or PaaS?** While the current template leverages PaaS services such as Redis, Azure Database for MySQL Flexible Server, Azure Database for Postgres, MS SQL etc. the current template offers Moodle as IaaS. Given limitations to Moodle our focus is IaaS for the time being however we would love to be informed of your experience running Moodle as PaaS on Azure (i.e. using [Azure Container Service](https://azure.microsoft.com/en-us/services/container-service/) or [Azure App Service](https://azure.microsoft.com/en-us/services/container-service/)).
|
||||
|
||||
2. **The current template uses Ubuntu. Will other Operating Systems such as CentOS or Windows Server be supported in the future?** Unfortunately we only have plans to support Ubuntu at this time. It is highly unlikely that this will change.
|
||||
|
||||
3. **What configuration do you recommend for my Moodle site?** The answer is it depends. At this stage we provide some rudimenatary t-shirt sized deployment recommendations and we are still building out our load testing tools and methodologies to provide more granularity. With that being said this is an area we are investing heavily in this area and we would love your contributions (i.e. load testing scripts, tools, methodologies etc.).
|
||||
|
||||
If you have an immediate need for guidance for a larger sized deployment, you might want to share some details around your deployment on our [issues page](https://github.com/Azure/Moodle/issues) and we will do our best to respond. Please as much information about your deployment as possible such as:
|
||||
If you have an immediate need for guidance for a larger sized deployment, you might want to share some details around your deployment on our [issues page](https://github.com/Azure/Moodle/issues) and we will do our best to respond. Please share as much information about your deployment as possible such as:
|
||||
|
||||
* average number of concurrent users your site will see
|
||||
* maximum level of concurrent/simultaenous users your site needs to support
|
||||
|
@ -119,9 +121,11 @@ If you have an immediate need for guidance for a larger sized deployment, you mi
|
|||
|
||||
10. **What other Azure services (i.e. [Azure CDN](https://azure.microsoft.com/en-us/services/cdn/), [Azure Media Services](https://azure.microsoft.com/en-us/services/media-services/), [Azure Bot Service](https://azure.microsoft.com/en-us/services/bot-service/) etc.) will you be integrating with when this effort is complete?** It's not clear yet. We'll need your [feedback](https://github.com/Azure/Moodle/issues) to decide.
|
||||
|
||||
11. **Why is the database on a public subnet?** At this stage Azure Database for MySQL and PostgreSQL do not support being moved to a vnet. As a workaround, we use a firewall-based IP restriction allow access only to the controller VM and VMSS load-balancer IPs.
|
||||
11. **Why is the database on a public subnet?** At this stage only Azure Database for PostgreSQL do not support being moved to a vnet. As a workaround, we use a firewall-based IP restriction allow access only to the controller VM and VMSS load-balancer IPs.
|
||||
|
||||
12. **How can I help with this effort?** Please see below.
|
||||
12. **Is Azure Database for MySQL Flexible Server deployed in a VNet?** When you leverage one of the pre-defined template options, we automatically deploy your Azure Database for MySQL Flexible Server in VNet for better isolation and greater security, optionally you can choose the fully configurable template to deploy Azure Database for MySQL Flexible Server outside VNet depending on your needs.
|
||||
|
||||
13. **How can I help with this effort?** Please see below.
|
||||
|
||||
## Automated Testing (Travis CI)
|
||||
This repository uses [Travis CI](https://travis-ci.org/) to deliver automated testing.
|
||||
|
|
|
@ -21,6 +21,18 @@
|
|||
"description": "ssh public key"
|
||||
},
|
||||
"type": "string"
|
||||
},
|
||||
"mysqlflexHaEnabled": {
|
||||
"allowedValues": [
|
||||
"Disabled",
|
||||
"SameZone",
|
||||
"ZoneRedundant"
|
||||
],
|
||||
"defaultValue": "Disabled",
|
||||
"metadata": {
|
||||
"description": "High availability mode for azure database for mysql flexible server."
|
||||
},
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"resources": [
|
||||
|
@ -38,8 +50,12 @@
|
|||
"autoscaleVmCountMax": { "value": 20 },
|
||||
"autoscaleVmSku": { "value": "Standard_DS3_v2" },
|
||||
"searchType": { "value": "elastic" },
|
||||
"mysqlPgresVcores": { "value": 16 },
|
||||
"mysqlPgresStgSizeGB": { "value": 512 },
|
||||
"dbServerType": { "value": "mysqlflex" },
|
||||
"vnetDbDeploySwitch": {"value": true },
|
||||
"mysqlflexSkuName": { "value": "Standard_D16ds_v4" },
|
||||
"mysqlflexStgIops": { "value": 5000 },
|
||||
"mysqlflexStgSizeGiB": { "value": 512 },
|
||||
"mysqlflexHaEnabled": { "value": "[parameters('mysqlflexHaEnabled')]" },
|
||||
"fileServerType": { "value": "azurefiles" },
|
||||
"fileServerDiskSize": { "value": 1024 },
|
||||
"storageAccountType": { "value": "Premium_LRS" },
|
||||
|
|
|
@ -21,6 +21,18 @@
|
|||
"description": "ssh public key"
|
||||
},
|
||||
"type": "string"
|
||||
},
|
||||
"mysqlflexHaEnabled": {
|
||||
"allowedValues": [
|
||||
"Disabled",
|
||||
"SameZone",
|
||||
"ZoneRedundant"
|
||||
],
|
||||
"defaultValue": "Disabled",
|
||||
"metadata": {
|
||||
"description": "High availability mode for azure database for mysql flexible server."
|
||||
},
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"resources": [
|
||||
|
@ -37,12 +49,16 @@
|
|||
"azureBackupSwitch": { "value": true },
|
||||
"searchType": { "value": "elastic" },
|
||||
"sshPublicKey": { "value": "[parameters('sshPublicKey')]" },
|
||||
"mysqlPgresVcores": { "value": 16 },
|
||||
"mysqlPgresStgSizeGB": { "value": 512 },
|
||||
"dbServerType": { "value": "mysqlflex" },
|
||||
"vnetDbDeploySwitch": {"value": true },
|
||||
"mysqlflexSkuName": { "value": "Standard_E64ds_v4" },
|
||||
"mysqlflexStgIops": { "value": 10000 },
|
||||
"mysqlflexStgSizeGiB": { "value": 1024 },
|
||||
"mysqlflexHaEnabled": { "value": "[parameters('mysqlflexHaEnabled')]" },
|
||||
"fileServerType": { "value": "azurefiles" },
|
||||
"fileServerDiskSize": { "value": 1024 },
|
||||
"storageAccountType": { "value": "Premium_LRS" },
|
||||
"autoscaleVmSku": { "value": "Standard_DS3_v2" }
|
||||
"autoscaleVmSku": { "value": "Standard_DS3_v2" }
|
||||
},
|
||||
"templateLink": {
|
||||
"uri": "[concat(parameters('_artifactsLocation'), 'azuredeploy.json', parameters('_artifactsLocationSasToken'))]"
|
||||
|
|
|
@ -37,7 +37,8 @@
|
|||
"sshPublicKey": { "value": "[parameters('sshPublicKey')]" },
|
||||
"autoscaleVmSku": { "value": "Standard_DS1_v2" },
|
||||
"enableAccelNwForOtherVmsSwitch": { "value": false },
|
||||
"dbServerType": { "value": "mysql" },
|
||||
"dbServerType": { "value": "mysqlflex" },
|
||||
"vnetDbDeploySwitch": {"value": true },
|
||||
"fileServerDiskCount": { "value": 2 },
|
||||
"fileServerDiskSize": { "value": 32 }
|
||||
},
|
||||
|
@ -59,7 +60,7 @@
|
|||
"documentation03": " - fileServerType: nfs",
|
||||
"documentation04": " - autoscaleVmSku: Standard_DS1_vs",
|
||||
"documentation05": " - fileServerDiskCount: 2",
|
||||
"documentation06": " - dbServerType: mysql",
|
||||
"documentation06": " - dbServerType: mysqlflex",
|
||||
"documentation07": " - redisDeploySwitch: false"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,8 +35,11 @@
|
|||
"_artifactsLocationSasToken": { "value": "[parameters('_artifactsLocationSasToken')]" },
|
||||
"redisDeploySwitch": { "value": false },
|
||||
"sshPublicKey": { "value": "[parameters('sshPublicKey')]" },
|
||||
"mysqlPgresVcores": { "value": 8 },
|
||||
"mysqlPgresStgSizeGB": { "value": 128 },
|
||||
"dbServerType": { "value": "mysqlflex" },
|
||||
"vnetDbDeploySwitch": {"value": true },
|
||||
"mysqlflexSkuName": { "value": "Standard_D8ds_v4" },
|
||||
"mysqlflexStgIops": { "value": 1000 },
|
||||
"mysqlflexStgSizeGiB": { "value": 128 },
|
||||
"fileServerDiskSize": { "value": 128 }
|
||||
},
|
||||
"templateLink": {
|
||||
|
|
154
azuredeploy.json
154
azuredeploy.json
|
@ -93,6 +93,13 @@
|
|||
},
|
||||
"type": "bool"
|
||||
},
|
||||
"vnetDbDeploySwitch": {
|
||||
"defaultValue": false,
|
||||
"metadata": {
|
||||
"description": "Switch to deploying the db in VNet. Note: currently the Vnet DB Deployment is available for mysqlflex only. For other db server types, the database will not be deployed in VNet."
|
||||
},
|
||||
"type": "bool"
|
||||
},
|
||||
"httpsTermination": {
|
||||
"allowedValues": [
|
||||
"VMSS",
|
||||
|
@ -199,11 +206,12 @@
|
|||
"type": "string"
|
||||
},
|
||||
"dbServerType": {
|
||||
"defaultValue": "mysql",
|
||||
"defaultValue": "mysqlflex",
|
||||
"allowedValues": [
|
||||
"postgres",
|
||||
"mysql",
|
||||
"mssql"
|
||||
"mssql",
|
||||
"mysqlflex"
|
||||
],
|
||||
"metadata": {
|
||||
"description": "Database type"
|
||||
|
@ -280,7 +288,8 @@
|
|||
},
|
||||
"mysqlVersion": {
|
||||
"allowedValues": [
|
||||
"5.7"
|
||||
"5.7",
|
||||
"8.0.21"
|
||||
],
|
||||
"defaultValue": "5.7",
|
||||
"metadata": {
|
||||
|
@ -288,6 +297,124 @@
|
|||
},
|
||||
"type": "string"
|
||||
},
|
||||
"mysqlflexSkuName": {
|
||||
"allowedValues": [
|
||||
"Standard_B1s",
|
||||
"Standard_B1ms",
|
||||
"Standard_B2s",
|
||||
"Standard_B2ms",
|
||||
"Standard_B4ms",
|
||||
"Standard_B8ms",
|
||||
"Standard_B12ms",
|
||||
"Standard_B16ms",
|
||||
"Standard_B20ms",
|
||||
"Standard_D2ads_v5",
|
||||
"Standard_D2ds_v4",
|
||||
"Standard_D4ads_v5",
|
||||
"Standard_D4ds_v4",
|
||||
"Standard_D8ads_v5",
|
||||
"Standard_D8ds_v4",
|
||||
"Standard_D16ads_v5",
|
||||
"Standard_D16ds_v4",
|
||||
"Standard_D32ads_v5",
|
||||
"Standard_D32ds_v4",
|
||||
"Standard_D48ads_v5",
|
||||
"Standard_D48ds_v4",
|
||||
"Standard_D64ads_v5",
|
||||
"Standard_D64ds_v4",
|
||||
"Standard_E2ds_v4",
|
||||
"Standard_E2ads_v5",
|
||||
"Standard_E4ds_v4",
|
||||
"Standard_E4ads_v5",
|
||||
"Standard_E8ds_v4",
|
||||
"Standard_E8ads_v5",
|
||||
"Standard_E16ds_v4",
|
||||
"Standard_E16ads_v5",
|
||||
"Standard_E32ds_v4",
|
||||
"Standard_E32ads_v5",
|
||||
"Standard_E48ds_v4",
|
||||
"Standard_E48ads_v5",
|
||||
"Standard_E64ds_v4",
|
||||
"Standard_E64ads_v5",
|
||||
"Standard_E80ids_v4",
|
||||
"Standard_E2ds_v5",
|
||||
"Standard_E4ds_v5",
|
||||
"Standard_E8ds_v5",
|
||||
"Standard_E16ds_v5",
|
||||
"Standard_E32ds_v5",
|
||||
"Standard_E48ds_v5",
|
||||
"Standard_E64ds_v5",
|
||||
"Standard_E96ds_v5"
|
||||
],
|
||||
"defaultValue": "Standard_B2s",
|
||||
"metadata": {
|
||||
"description": "The name of the sku for Azure Database for MySQL Flexible Servers, e.g. Standard_D32ds_v4. Complete list is available here : https://learn.microsoft.com/en-us/azure/mysql/flexible-server/concepts-service-tiers-storage "
|
||||
},
|
||||
"type": "string"
|
||||
},
|
||||
"mysqlflexStgSizeGiB": {
|
||||
"defaultValue": 20,
|
||||
"minValue": 20,
|
||||
"maxValue": 16384,
|
||||
"metadata": {
|
||||
"description": "Azure Database for MySQL Flexible server storage size in GiB. Minimum 20GiB, increase by 1GiB, up to 16TiB (1024 GiB)"
|
||||
},
|
||||
"type": "int"
|
||||
},
|
||||
"mysqlflexStgIops": {
|
||||
"defaultValue": 360,
|
||||
"minValue": 360,
|
||||
"metadata": {
|
||||
"description": "Azure Database for MySQL Flexible server storage iops. Minimum 360, Maxium is determined by selected mysqlflexSkuName."
|
||||
},
|
||||
"type": "int"
|
||||
},
|
||||
"mysqlflexStgAutogrow": {
|
||||
"allowedValues": [
|
||||
"Enabled",
|
||||
"Disabled"
|
||||
],
|
||||
"defaultValue": "Enabled",
|
||||
"type": "string"
|
||||
},
|
||||
"mysqlflexHaEnabled": {
|
||||
"allowedValues": [
|
||||
"Disabled",
|
||||
"SameZone",
|
||||
"ZoneRedundant"
|
||||
],
|
||||
"defaultValue": "Disabled",
|
||||
"metadata": {
|
||||
"description": "High availability mode for azure database for mysql flexible server."
|
||||
},
|
||||
"type": "string"
|
||||
},
|
||||
"mysqlflexAvailabilityZone": {
|
||||
"allowedValues": [
|
||||
"1",
|
||||
"2",
|
||||
"3",
|
||||
""
|
||||
],
|
||||
"defaultValue": "",
|
||||
"metadata": {
|
||||
"description": "Availability Zone information of the server. (Leave blank for No Preference)."
|
||||
},
|
||||
"type": "string"
|
||||
},
|
||||
"mysqlflexStandbyAvailabilityZone": {
|
||||
"allowedValues": [
|
||||
"1",
|
||||
"2",
|
||||
"3",
|
||||
""
|
||||
],
|
||||
"defaultValue": "",
|
||||
"metadata": {
|
||||
"description": "Availability zone of the High availability standby server. (Leave blank for No Preference). Add this value if HA is enabled."
|
||||
},
|
||||
"type": "string"
|
||||
},
|
||||
"postgresVersion": {
|
||||
"allowedValues": [
|
||||
"9.6"
|
||||
|
@ -762,6 +889,9 @@
|
|||
},
|
||||
"ctlrPubIp": {
|
||||
"value": "[reference('networkTemplate').outputs.ctlrPubIp.value]"
|
||||
},
|
||||
"subnetIdDb": {
|
||||
"value": "[reference('networkTemplate').outputs.subnetIdDb.value]"
|
||||
}
|
||||
},
|
||||
"templateLink": {
|
||||
|
@ -1154,7 +1284,7 @@
|
|||
"dbLogin": "[parameters('dbLogin')]",
|
||||
"dbLoginPassword": "[concat(substring(uniqueString(resourceGroup().id, deployment().name), 2, 11), '*7', toUpper('pfiwb'))]",
|
||||
"dbServerType": "[parameters('dbServerType')]",
|
||||
"dbUsername": "[concat(parameters('dbLogin'), '@', parameters('dbServerType'), '-', variables('resourceprefix'))]",
|
||||
"dbUsername": "[if(equals(parameters('dbServerType'), 'mysqlflex'), parameters('dbLogin'), concat(parameters('dbLogin'), '@', parameters('dbServerType'), '-', variables('resourceprefix')))]",
|
||||
"ddosPlanName": "[concat('ddos-plan-',variables('resourceprefix'))]",
|
||||
"ddosSwitch": "[parameters('ddosSwitch')]",
|
||||
"elasticVmSku": "[parameters('elasticVmSku')]",
|
||||
|
@ -1211,7 +1341,7 @@
|
|||
"moodleDbName": "[parameters('moodleDbName')]",
|
||||
"moodleDbPass": "[concat('9#36^', substring(uniqueString(resourceGroup().id, deployment().name), 5, 8), toUpper('ercq'))]",
|
||||
"moodleDbUser": "[parameters('moodleDbUser')]",
|
||||
"moodleDbUserAzure": "[concat(parameters('moodleDbUser'), '@', parameters('dbServerType'), '-', variables('resourceprefix'))]",
|
||||
"moodleDbUserAzure": "[if(equals(parameters('dbServerType'), 'mysqlflex'), parameters('moodleDbUser'), concat(parameters('moodleDbUser'), '@', parameters('dbServerType'), '-', variables('resourceprefix')))]",
|
||||
"moodleInstallScriptFilename": "install_moodle.sh",
|
||||
"moodleOnAzureConfigsJsonPath": "/var/lib/cloud/instance/moodle_on_azure_configs.json",
|
||||
"moodleVersion": "[parameters('moodleVersion')]",
|
||||
|
@ -1225,6 +1355,16 @@
|
|||
"mysqlPgresStgSizeGB": "[parameters('mysqlPgresStgSizeGB')]",
|
||||
"mysqlPgresVcores": "[parameters('mysqlPgresVcores')]",
|
||||
"mysqlVersion": "[parameters('mysqlVersion')]",
|
||||
"mysqlflexSkuName": "[parameters('mysqlflexSkuName')]",
|
||||
"mysqlflexSkuTier": "[if(startsWith(parameters('mysqlflexSkuName'), 'Standard_B'), 'Burstable', if(startsWith(parameters('mysqlflexSkuName'), 'Standard_D'), 'GeneralPurpose', 'MemoryOptimized'))]",
|
||||
"mysqlflexStgSizeGiB": "[parameters('mysqlflexStgSizeGiB')]",
|
||||
"mysqlflexStgIops": "[parameters('mysqlflexStgIops')]",
|
||||
"mysqlflexStgAutogrow": "[parameters('mysqlflexStgAutogrow')]",
|
||||
"mysqlflexHaEnabled": "[parameters('mysqlflexHaEnabled')]",
|
||||
"mysqlflexAvailabilityZone": "[parameters('mysqlflexAvailabilityZone')]",
|
||||
"mysqlflexStandbyAvailabilityZone": "[parameters('mysqlflexStandbyAvailabilityZone')]",
|
||||
"mysqlflexRequireSecureTransport": "[if(equals(parameters('sslEnforcement'),'Enabled'),'ON','OFF')]",
|
||||
"mysqlflexPrivateDnsZoneName": "[concat(parameters('dbServerType'), '-',variables('resourceprefix'),'.private.mysql.database.azure.com')]",
|
||||
"nfsByoIpExportPath": "[parameters('nfsByoIpExportPath')]",
|
||||
"nfsHaClientsIPRange": "[variables('subnetWebRange')]",
|
||||
"nfsHaExportPath": "/drbd/data",
|
||||
|
@ -1253,6 +1393,9 @@
|
|||
"sslEnforcement": "[parameters('sslEnforcement')]",
|
||||
"storageAccountName": "[tolower(concat('abs',variables('resourceprefix')))]",
|
||||
"storageAccountType": "[parameters('storageAccountType')]",
|
||||
"subnetDb": "[concat('db-subnet-',variables('resourceprefix'))]",
|
||||
"subnetDbPrefix": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),7)))]",
|
||||
"subnetDbRange": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),7)), '.0/24')]",
|
||||
"subnetAppGw": "[concat('appgw-subnet-',variables('resourceprefix'))]",
|
||||
"subnetAppGwPrefix": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),6)))]",
|
||||
"subnetAppGwRange": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),6)), '.0/24')]",
|
||||
|
@ -1286,6 +1429,7 @@
|
|||
"vaultName": "[concat('vault-',variables('resourceprefix'))]",
|
||||
"vmssName": "[concat('vmss-',variables('resourceprefix'))]",
|
||||
"vmssdStorageAccounttName": "[concat('vmss',uniqueString(resourceGroup().id))]",
|
||||
"vnetDbDeploySwitch": "[and(parameters('vnetDbDeploySwitch'), equals(parameters('dbServerType'), 'mysqlflex'))]",
|
||||
"vnetGwDeploySwitch": "[parameters('vnetGwDeploySwitch')]",
|
||||
"vnetName": "[concat('vnet-',variables('resourceprefix'))]",
|
||||
"vpnType": "[parameters('vpnType')]",
|
||||
|
|
|
@ -31,6 +31,12 @@
|
|||
"description": "Public IP address of the deployed controller VM"
|
||||
},
|
||||
"type": "string"
|
||||
},
|
||||
"subnetIdDb": {
|
||||
"metadata": {
|
||||
"description": "Azure resource ID of the subnet where the Db is to be deployed.(if deployed in vnet)"
|
||||
},
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"resources": [
|
||||
|
|
|
@ -31,6 +31,12 @@
|
|||
"description": "Public IP address of the deployed controller VM"
|
||||
},
|
||||
"type": "string"
|
||||
},
|
||||
"subnetIdDb": {
|
||||
"metadata": {
|
||||
"description": "Azure resource ID of the subnet where the Db is to be deployed.(if deployed in vnet)"
|
||||
},
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"resources": [
|
||||
|
|
|
@ -0,0 +1,154 @@
|
|||
{
|
||||
"$schema": "http://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
|
||||
"contentVersion": "1.0.0.0",
|
||||
"parameters": {
|
||||
"moodleCommon": {
|
||||
"metadata": {
|
||||
"description": "Common Moodle values"
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"lbPubIp": {
|
||||
"metadata": {
|
||||
"description": "Public IP address of the deployed load balancer"
|
||||
},
|
||||
"type": "string"
|
||||
},
|
||||
"lbOut001PubIp": {
|
||||
"metadata": {
|
||||
"description": "Outgoing Public IP address of the deployed load balancer"
|
||||
},
|
||||
"type": "string"
|
||||
},
|
||||
"lbOut002PubIp": {
|
||||
"metadata": {
|
||||
"description": "Outgoing Public IP address of the deployed load balancer"
|
||||
},
|
||||
"type": "string"
|
||||
},
|
||||
"ctlrPubIp": {
|
||||
"metadata": {
|
||||
"description": "Public IP address of the deployed controller VM"
|
||||
},
|
||||
"type": "string"
|
||||
},
|
||||
"subnetIdDb": {
|
||||
"metadata": {
|
||||
"description": "Azure resource ID of the subnet where the Db is to be deployed.(if deployed in vnet)"
|
||||
},
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"resources": [
|
||||
{
|
||||
"type": "Microsoft.DBforMySQL/flexibleServers",
|
||||
"apiVersion": "2021-05-01",
|
||||
"location": "[parameters('moodleCommon').location]",
|
||||
"name": "[parameters('moodleCommon').serverName]",
|
||||
"sku": {
|
||||
"name": "[parameters('moodleCommon').mysqlflexSkuName]",
|
||||
"tier": "[parameters('moodleCommon').mysqlflexSkuTier]"
|
||||
},
|
||||
"properties": {
|
||||
"version": "[parameters('moodleCommon').mysqlVersion]",
|
||||
"administratorLogin": "[parameters('moodleCommon').dbLogin]",
|
||||
"administratorLoginPassword": "[parameters('moodleCommon').dbLoginPassword]",
|
||||
"availabilityZone": "[parameters('moodleCommon').mysqlflexAvailabilityZone]",
|
||||
"highAvailability": {
|
||||
"mode": "[parameters('moodleCommon').mysqlflexHaEnabled]",
|
||||
"standbyAvailabilityZone": "[parameters('moodleCommon').mysqlflexStandbyAvailabilityZone]"
|
||||
},
|
||||
"Storage": {
|
||||
"storageSizeGB": "[parameters('moodleCommon').mysqlflexStgSizeGiB]",
|
||||
"iops": "[parameters('moodleCommon').mysqlflexStgIops]",
|
||||
"autogrow": "[parameters('moodleCommon').mysqlflexStgAutogrow]"
|
||||
},
|
||||
"network": "[if(parameters('moodleCommon').vnetDbDeploySwitch, variables('vnetNetworkData'), createObject())]",
|
||||
"Backup": {
|
||||
"backupRetentionDays": 35,
|
||||
"geoRedundantBackup": "Enabled"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Microsoft.DBforMySQL/flexibleServers/configurations",
|
||||
"apiVersion": "2021-05-01",
|
||||
"name": "[concat(parameters('moodleCommon').serverName, '/require_secure_transport')]",
|
||||
"dependsOn": [
|
||||
"[concat('Microsoft.DBforMySQL/flexibleServers/', parameters('moodleCommon').serverName)]"
|
||||
],
|
||||
"properties": {
|
||||
"value": "[parameters('moodleCommon').mysqlflexRequireSecureTransport]",
|
||||
"source": "user-override"
|
||||
}
|
||||
},
|
||||
{
|
||||
"condition": "[not(parameters('moodleCommon').vnetDbDeploySwitch)]",
|
||||
"type": "Microsoft.DBforMySQL/flexibleServers/firewallRules",
|
||||
"apiVersion": "2021-05-01",
|
||||
"name": "[concat(parameters('moodleCommon').serverName, '/mysqlflex-firewall-allow-lb')]",
|
||||
"dependsOn": [
|
||||
"[concat('Microsoft.DBforMySQL/flexibleservers/', parameters('moodleCommon').serverName)]"
|
||||
],
|
||||
"location": "[parameters('moodleCommon').location]",
|
||||
"properties": {
|
||||
"startIpAddress": "[parameters('lbPubIp')]",
|
||||
"endIpAddress": "[parameters('lbPubIp')]"
|
||||
}
|
||||
},
|
||||
{
|
||||
"condition": "[not(parameters('moodleCommon').vnetDbDeploySwitch)]",
|
||||
"type": "Microsoft.DBforMySQL/flexibleServers/firewallRules",
|
||||
"apiVersion": "2021-05-01",
|
||||
"name": "[concat(parameters('moodleCommon').serverName, '/mysqlflex-firewall-allow-lb-out001')]",
|
||||
"dependsOn": [
|
||||
"[concat('Microsoft.DBforMySQL/flexibleservers/', parameters('moodleCommon').serverName)]"
|
||||
],
|
||||
"location": "[parameters('moodleCommon').location]",
|
||||
"properties": {
|
||||
"startIpAddress": "[parameters('lbOut001PubIp')]",
|
||||
"endIpAddress": "[parameters('lbOut001PubIp')]"
|
||||
}
|
||||
},
|
||||
{
|
||||
"condition": "[not(parameters('moodleCommon').vnetDbDeploySwitch)]",
|
||||
"type": "Microsoft.DBforMySQL/flexibleServers/firewallRules",
|
||||
"apiVersion": "2021-05-01",
|
||||
"name": "[concat(parameters('moodleCommon').serverName, '/mysqlflex-firewall-allow-lb-out002')]",
|
||||
"dependsOn": [
|
||||
"[concat('Microsoft.DBforMySQL/flexibleservers/', parameters('moodleCommon').serverName)]"
|
||||
],
|
||||
"location": "[parameters('moodleCommon').location]",
|
||||
"properties": {
|
||||
"startIpAddress": "[parameters('lbOut002PubIp')]",
|
||||
"endIpAddress": "[parameters('lbOut002PubIp')]"
|
||||
}
|
||||
},
|
||||
{
|
||||
"condition": "[not(parameters('moodleCommon').vnetDbDeploySwitch)]",
|
||||
"type": "Microsoft.DBforMySQL/flexibleServers/firewallRules",
|
||||
"apiVersion": "2021-05-01",
|
||||
"name": "[concat(parameters('moodleCommon').serverName, '/mysqlflex-firewall-allow-ctlr')]",
|
||||
"dependsOn": [
|
||||
"[concat('Microsoft.DBforMySQL/flexibleservers/', parameters('moodleCommon').serverName)]"
|
||||
],
|
||||
"location": "[parameters('moodleCommon').location]",
|
||||
"properties": {
|
||||
"startIpAddress": "[parameters('ctlrPubIp')]",
|
||||
"endIpAddress": "[parameters('ctlrPubIp')]"
|
||||
}
|
||||
}
|
||||
],
|
||||
"variables": {
|
||||
"vnetNetworkData": {
|
||||
"delegatedSubnetResourceId": "[parameters('subnetIdDb')]",
|
||||
"privateDnsZoneResourceId": "[resourceId('Microsoft.Network/privateDnsZones', parameters('moodleCommon').mysqlflexPrivateDnsZoneName)]"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"dbFQDN": {
|
||||
"type": "string",
|
||||
"value": "[reference(parameters('moodleCommon').serverName).fullyQualifiedDomainName]"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -31,6 +31,12 @@
|
|||
"description": "Public IP address of the deployed controller VM"
|
||||
},
|
||||
"type": "string"
|
||||
},
|
||||
"subnetIdDb": {
|
||||
"metadata": {
|
||||
"description": "Azure resource ID of the subnet where the Db is to be deployed.(if deployed in vnet)"
|
||||
},
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"resources": [
|
||||
|
|
|
@ -97,7 +97,28 @@
|
|||
"properties": {
|
||||
"addressPrefix": "[parameters('moodleCommon').subnetAppGwRange]"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"condition": "[and(parameters('moodleCommon').vnetDbDeploySwitch, equals(parameters('moodleCommon').dbServerType, 'mysqlflex'))]",
|
||||
"type": "Microsoft.Network/virtualNetworks/subnets",
|
||||
"apiVersion": "2021-05-01",
|
||||
"name": "[concat(parameters('vnetName'),'/',parameters('moodleCommon').subnetDb)]",
|
||||
"location": "[parameters('moodleCommon').location]",
|
||||
"dependsOn": [
|
||||
"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('moodleCommon').subnetAppGw)]"
|
||||
],
|
||||
"properties": {
|
||||
"addressPrefix": "[parameters('moodleCommon').subnetDbRange]",
|
||||
"delegations": [
|
||||
{
|
||||
"name": "MySQLflexibleServers",
|
||||
"properties": {
|
||||
"serviceName": "Microsoft.DBforMySQL/flexibleServers"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"variables": {
|
||||
"documentation01": "This sub-template creates various subnets needed for various components of the cluster.",
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
{
|
||||
"$schema": "http://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
|
||||
"contentVersion": "1.0.0.0",
|
||||
"parameters": {
|
||||
"moodleCommon": {
|
||||
"metadata": {
|
||||
"description": "Common Moodle values"
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"vnetId": {
|
||||
"metadata": {
|
||||
"description": "The resource id of the vnet to which the private DNS Zone shoud be associated"
|
||||
},
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"resources": [
|
||||
{
|
||||
"condition": "[and(parameters('moodleCommon').vnetDbDeploySwitch, equals(parameters('moodleCommon').dbServerType, 'mysqlflex'))]",
|
||||
"type": "Microsoft.Network/privateDnsZones",
|
||||
"apiVersion": "2018-09-01",
|
||||
"name": "[parameters('moodleCommon').mysqlflexPrivateDnsZoneName]",
|
||||
"location": "global",
|
||||
"tags": {},
|
||||
"properties": {}
|
||||
},
|
||||
{
|
||||
"condition": "[and(parameters('moodleCommon').vnetDbDeploySwitch, equals(parameters('moodleCommon').dbServerType, 'mysqlflex'))]",
|
||||
"type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks",
|
||||
"apiVersion": "2020-06-01",
|
||||
"dependsOn": [
|
||||
"[resourceId('Microsoft.Network/privateDnsZones', parameters('moodleCommon').mysqlflexPrivateDnsZoneName)]"
|
||||
],
|
||||
"name": "[concat(parameters('moodleCommon').mysqlflexPrivateDnsZoneName, '/', uniqueString(parameters('vnetId')))]",
|
||||
"location": "global",
|
||||
"properties": {
|
||||
"virtualNetwork": {
|
||||
"id": "[parameters('vnetId')]"
|
||||
},
|
||||
"registrationEnabled": false
|
||||
}
|
||||
}
|
||||
],
|
||||
"variables": {
|
||||
"documentation01": "This sub-template creates private DNS zones and link it to a vnet"
|
||||
}
|
||||
}
|
|
@ -55,6 +55,30 @@
|
|||
},
|
||||
"type": "Microsoft.Resources/deployments"
|
||||
},
|
||||
{
|
||||
"type": "Microsoft.Resources/deployments",
|
||||
"apiVersion": "2020-06-01",
|
||||
"dependsOn": [
|
||||
"Microsoft.Resources/deployments/vnetTemplate"
|
||||
],
|
||||
"name": "privateDnsZoneTemplate",
|
||||
"subscriptionId": "[variables('vnetSub')]",
|
||||
"resourceGroup": "[variables('vnetRg')]",
|
||||
"properties": {
|
||||
"mode": "Incremental",
|
||||
"parameters": {
|
||||
"moodleCommon": {
|
||||
"value": "[parameters('moodleCommon')]"
|
||||
},
|
||||
"vnetId": {
|
||||
"value": "[variables('vnetId')]"
|
||||
}
|
||||
},
|
||||
"templateLink": {
|
||||
"uri": "[concat(parameters('moodleCommon').baseTemplateUrl,'network-vnet-privateDnsZone.json',parameters('moodleCommon').artifactsSasToken)]"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Microsoft.Resources/deployments",
|
||||
"apiVersion": "2017-05-10",
|
||||
|
@ -413,6 +437,7 @@
|
|||
"vnetSub": "[if(equals(parameters('moodleCommon').customVnetId, ''), subscription().subscriptionId, variables('customVnetIdArr')[2])]",
|
||||
"vnetRg": "[if(equals(parameters('moodleCommon').customVnetId, ''), resourceGroup().name, variables('customVnetIdArr')[4])]",
|
||||
"vnetName": "[if(equals(parameters('moodleCommon').customVnetId, ''), parameters('moodleCommon').vnetName, variables('customVnetIdArr')[8])]",
|
||||
"vnetId": "[if(equals(parameters('moodleCommon').customVnetId, ''), resourceId('Microsoft.Network/virtualNetworks', parameters('moodleCommon').vnetName), parameters('moodleCommon').customVnetId)]",
|
||||
"customVnetSubnetIdWeb": "[concat(parameters('moodleCommon').customVnetId, '/subnets/', parameters('moodleCommon').subnetWeb)]",
|
||||
"customVnetSubnetIdSan": "[concat(parameters('moodleCommon').customVnetId, '/subnets/', parameters('moodleCommon').subnetSan)]",
|
||||
"customVnetSubnetIdRedis": "[concat(parameters('moodleCommon').customVnetId, '/subnets/', parameters('moodleCommon').subnetRedis)]",
|
||||
|
@ -420,13 +445,15 @@
|
|||
"customVnetSubnetIdTika": "[concat(parameters('moodleCommon').customVnetId, '/subnets/', parameters('moodleCommon').subnetTika)]",
|
||||
"customVnetSubnetIdGateway": "[concat(parameters('moodleCommon').customVnetId, '/subnets/', parameters('moodleCommon').subnetGateway)]",
|
||||
"customVnetSubnetIdAppGw": "[concat(parameters('moodleCommon').customVnetId, '/subnets/', parameters('moodleCommon').subnetAppGw)]",
|
||||
"customVnetSubnetIdDb": "[concat(parameters('moodleCommon').customVnetId, '/subnets/', parameters('moodleCommon').subnetDb)]",
|
||||
"subnetIdWeb": "[if(equals(parameters('moodleCommon').customVnetId, ''), resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), parameters('moodleCommon').subnetWeb), variables('customVnetSubnetIdWeb'))]",
|
||||
"subnetIdSan": "[if(equals(parameters('moodleCommon').customVnetId, ''), resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), parameters('moodleCommon').subnetSan), variables('customVnetSubnetIdSan'))]",
|
||||
"subnetIdRedis": "[if(equals(parameters('moodleCommon').customVnetId, ''), resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), parameters('moodleCommon').subnetRedis), variables('customVnetSubnetIdRedis'))]",
|
||||
"subnetIdElastic": "[if(equals(parameters('moodleCommon').customVnetId, ''), resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), parameters('moodleCommon').subnetElastic), variables('customVnetSubnetIdElastic'))]",
|
||||
"subnetIdTika": "[if(equals(parameters('moodleCommon').customVnetId, ''), resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), parameters('moodleCommon').subnetTika), variables('customVnetSubnetIdTika'))]",
|
||||
"subnetIdGateway": "[if(equals(parameters('moodleCommon').customVnetId, ''), resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), parameters('moodleCommon').subnetGateway), variables('customVnetSubnetIdGateway'))]",
|
||||
"subnetIdAppGw": "[if(equals(parameters('moodleCommon').customVnetId, ''), resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), parameters('moodleCommon').subnetAppGw), variables('customVnetSubnetIdAppGw'))]"
|
||||
"subnetIdAppGw": "[if(equals(parameters('moodleCommon').customVnetId, ''), resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), parameters('moodleCommon').subnetAppGw), variables('customVnetSubnetIdAppGw'))]",
|
||||
"subnetIdDb": "[if(parameters('moodleCommon').vnetDbDeploySwitch, if(equals(parameters('moodleCommon').customVnetId, ''), resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), parameters('moodleCommon').subnetDb), variables('customVnetSubnetIdDb')), '')]"
|
||||
},
|
||||
"outputs": {
|
||||
"lbPubIp": {
|
||||
|
@ -468,6 +495,10 @@
|
|||
"subnetIdTika": {
|
||||
"value": "[variables('subnetIdTika')]",
|
||||
"type": "string"
|
||||
},
|
||||
"subnetIdDb": {
|
||||
"value": "[variables('subnetIdDb')]",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -75,10 +75,10 @@
|
|||
"isMigration": "[parameters('moodleCommon').isMigration]"
|
||||
},
|
||||
"dbServerProfile": {
|
||||
"type": "[parameters('moodleCommon').dbServerType]",
|
||||
"type": "[if(equals(parameters('moodleCommon').dbServerType, 'mysqlflex'), 'mysql', parameters('moodleCommon').dbServerType)]",
|
||||
"fqdn": "[parameters('dbFQDN')]",
|
||||
"adminLogin": "[parameters('moodleCommon').dbLogin]",
|
||||
"adminLoginAzure": "[concat(parameters('moodleCommon').dbLogin, '@', parameters('moodleCommon').dbServerType, '-', parameters('moodleCommon').resourcesPrefix)]",
|
||||
"adminLoginAzure": "[if(equals(parameters('moodleCommon').dbServerType, 'mysqlflex'), parameters('moodleCommon').dbLogin, concat(parameters('moodleCommon').dbLogin, '@', parameters('moodleCommon').dbServerType, '-', parameters('moodleCommon').resourcesPrefix))]",
|
||||
"adminPassword": "[parameters('moodleCommon').dbLoginPassword]",
|
||||
"mssqlDbServiceObjectiveName": "[parameters('moodleCommon').mssqlDbServiceObjectiveName]",
|
||||
"mssqlDbEdition": "[parameters('moodleCommon').mssqlDbEdition]",
|
||||
|
|
Загрузка…
Ссылка в новой задаче