From 1a74307d5d5a07f5d75831228e609ef1edfd4093 Mon Sep 17 00:00:00 2001 From: Mark Gray Date: Sat, 27 Oct 2018 15:32:15 -0700 Subject: [PATCH] Quickstart for WebApp with MySQL backend --- quickstart/WebAppMySql/main.tf | 5 ++ quickstart/WebAppMySql/mysql.tf | 29 +++++++++++ quickstart/WebAppMySql/output.tf | 15 ++++++ quickstart/WebAppMySql/providers.tf | 3 ++ quickstart/WebAppMySql/terraform.tfvars | 12 +++++ quickstart/WebAppMySql/variables.tf | 65 +++++++++++++++++++++++++ quickstart/WebAppMySql/webapp.tf | 25 ++++++++++ 7 files changed, 154 insertions(+) create mode 100644 quickstart/WebAppMySql/main.tf create mode 100644 quickstart/WebAppMySql/mysql.tf create mode 100644 quickstart/WebAppMySql/output.tf create mode 100644 quickstart/WebAppMySql/providers.tf create mode 100644 quickstart/WebAppMySql/terraform.tfvars create mode 100644 quickstart/WebAppMySql/variables.tf create mode 100644 quickstart/WebAppMySql/webapp.tf diff --git a/quickstart/WebAppMySql/main.tf b/quickstart/WebAppMySql/main.tf new file mode 100644 index 00000000..7dfd86a8 --- /dev/null +++ b/quickstart/WebAppMySql/main.tf @@ -0,0 +1,5 @@ +resource "azurerm_resource_group" "webAppMySqlRg" { + name = "${var.rg}" + location = "${var.loc}" + tags = "${var.tags}" +} diff --git a/quickstart/WebAppMySql/mysql.tf b/quickstart/WebAppMySql/mysql.tf new file mode 100644 index 00000000..8c424e48 --- /dev/null +++ b/quickstart/WebAppMySql/mysql.tf @@ -0,0 +1,29 @@ +resource "azurerm_mysql_server" "webAppBackend" { + name = "${var.siteName}pgserver" + location = "${azurerm_resource_group.webAppMySqlRg.location}" + resource_group_name = "${azurerm_resource_group.webAppMySqlRg.name}" + tags = "${azurerm_resource_group.webAppMySqlRg.tags}" + + administrator_login = "${var.administratorLogin}" + administrator_login_password = "${var.administratorLoginPassword}" + version = "${var.mysqlVersion}" + ssl_enforcement = "Disabled" + sku { + name = "${var.databaseSkuName}" + capacity = "${var.databaseDTU}" + tier = "${var.databaseSkuTier}" + family = "${var.databaseSkuFamily}" + } + storage_profile { + storage_mb = "${var.databaseSkuSizeMB}" + } +} + +resource "azurerm_mysql_database" "webAppBackend" { + name = "${var.siteName}database" + resource_group_name = "${azurerm_resource_group.webAppMySqlRg.name}" + + server_name = "${azurerm_mysql_server.webAppBackend.name}" + charset = "utf8" + collation = "utf8_unicode_ci" +} \ No newline at end of file diff --git a/quickstart/WebAppMySql/output.tf b/quickstart/WebAppMySql/output.tf new file mode 100644 index 00000000..04c8be83 --- /dev/null +++ b/quickstart/WebAppMySql/output.tf @@ -0,0 +1,15 @@ +output "webAppUrl" { + value = "${azurerm_app_service.webAppFrontend.default_site_hostname}" +} + +output "databaseName" { + value = "${azurerm_mysql_database.webAppBackend.name}" +} + +output "databaseServerName" { + value = "${azurerm_mysql_server.webAppBackend.fqdn}" +} + +output "appServicePlanName" { + value = "${azurerm_app_service_plan.webAppFrontend.name}" +} diff --git a/quickstart/WebAppMySql/providers.tf b/quickstart/WebAppMySql/providers.tf new file mode 100644 index 00000000..7e54e2f8 --- /dev/null +++ b/quickstart/WebAppMySql/providers.tf @@ -0,0 +1,3 @@ +provider "azurerm" { + version = "~>1.17" +} \ No newline at end of file diff --git a/quickstart/WebAppMySql/terraform.tfvars b/quickstart/WebAppMySql/terraform.tfvars new file mode 100644 index 00000000..5f018616 --- /dev/null +++ b/quickstart/WebAppMySql/terraform.tfvars @@ -0,0 +1,12 @@ +rg = "mcg623webAppMysql" +loc = "eastus2" +tags = { + type = "sample" + services = "MySql, WebApp, Azure database" +} + +administratorLogin = "markg" +siteName = "mcgecd69mysql" + +servicePlanTier = "Standard" +servicePlanSize = "S1" \ No newline at end of file diff --git a/quickstart/WebAppMySql/variables.tf b/quickstart/WebAppMySql/variables.tf new file mode 100644 index 00000000..a1df8a02 --- /dev/null +++ b/quickstart/WebAppMySql/variables.tf @@ -0,0 +1,65 @@ +variable "rg" { + description = "Azure resource group for all resources." +} + +variable "siteName" { + description = "Name of azure web app" +} + +variable "tags" { + description = "Azure Tags for all resources." + default = {} +} + + +variable "administratorLogin" { + description = "Database administrator login name" +} + +variable "administratorLoginPassword" { + description = "Database administrator password" +} + +variable "databaseDTU" { + description = "Azure database for MySQL pricing tier" + default = 2 +} + +variable "databaseSkuName" { + description = "Azure database for MySQL sku name" + default = "GP_Gen4_2" +} + +variable "databaseSkuFamily" { + description = "Azure database for MySQL sku family" + default = "Gen4" +} + + +variable "databaseSkuSizeMB" { + description = "Azure database for MySQL Sku Size" + default = 5120 +} + +variable "databaseSkuTier" { + description = "Azure database for MySQL pricing tier" + default = "GeneralPurpose" +} + +variable "mysqlVersion" { + description = "MySQL version" + default = "5.6" +} + +variable "loc" { + description = "Location for all resources." + default = "eastus2" +} + +variable "servicePlanTier" { + description = "Azure managed application service plan pricing tier" +} + +variable "servicePlanSize" { + description = "Azure managed application service plan instance size" +} diff --git a/quickstart/WebAppMySql/webapp.tf b/quickstart/WebAppMySql/webapp.tf new file mode 100644 index 00000000..2e29d67a --- /dev/null +++ b/quickstart/WebAppMySql/webapp.tf @@ -0,0 +1,25 @@ +resource "azurerm_app_service_plan" "webAppFrontend" { + name = "${var.siteName}serviceplan" + resource_group_name = "${azurerm_resource_group.webAppMySqlRg.name}" + location = "${azurerm_resource_group.webAppMySqlRg.location}" + tags = "${azurerm_resource_group.webAppMySqlRg.tags}" + + sku { + tier = "${var.servicePlanTier}" + size = "${var.servicePlanSize}" + } +} + +resource "azurerm_app_service" "webAppFrontend" { + name = "${var.siteName}" + location = "${azurerm_resource_group.webAppMySqlRg.location}" + resource_group_name = "${azurerm_resource_group.webAppMySqlRg.name}" + tags = "${azurerm_resource_group.webAppMySqlRg.tags}" + + app_service_plan_id = "${azurerm_app_service_plan.webAppFrontend.id}" + connection_string { + name = "DefaultConnect" + type = "MySql" + value = "Database=${azurerm_mysql_database.webAppBackend.name};Data Source=${azurerm_mysql_server.webAppBackend.fqdn};User Id=${var.administratorLogin}@${azurerm_mysql_server.webAppBackend.name};Password=${var.administratorLoginPassword}" + } +} \ No newline at end of file