From 5e48773198e4317388e9bb280248a077184130a7 Mon Sep 17 00:00:00 2001 From: Dingjia Chen <48020536+Pumpkin-3906@users.noreply.github.com> Date: Wed, 1 Mar 2023 23:41:59 -0600 Subject: [PATCH] 201-web-app-postgres-keyvault patch (#179) * fix example --- .../201-web-app-postgres-keyvault/main.tf | 13 ++-- .../201-web-app-postgres-keyvault/mysql.tf | 53 +++++++------- .../201-web-app-postgres-keyvault/output.tf | 15 ---- .../201-web-app-postgres-keyvault/outputs.tf | 24 +++++++ .../providers.tf | 17 ++++- .../terraform.tfvars | 18 ++--- .../variables.tf | 69 ++++++++----------- .../201-web-app-postgres-keyvault/webapp.tf | 28 ++++---- 8 files changed, 126 insertions(+), 111 deletions(-) delete mode 100644 quickstart/201-web-app-postgres-keyvault/output.tf create mode 100644 quickstart/201-web-app-postgres-keyvault/outputs.tf diff --git a/quickstart/201-web-app-postgres-keyvault/main.tf b/quickstart/201-web-app-postgres-keyvault/main.tf index a301216e..6a2c3135 100644 --- a/quickstart/201-web-app-postgres-keyvault/main.tf +++ b/quickstart/201-web-app-postgres-keyvault/main.tf @@ -1,5 +1,10 @@ -resource "azurerm_resource_group" "webAppMySqlRg" { - name = "${var.rg}" - location = "${var.loc}" - tags = "${var.tags}" +resource "azurerm_resource_group" "web_app_mysql_rg" { + name = "${random_pet.prefix.id}-rg" + location = var.loc + tags = var.tags } + +resource "random_pet" "prefix" { + prefix = var.prefix + length = 1 +} \ No newline at end of file diff --git a/quickstart/201-web-app-postgres-keyvault/mysql.tf b/quickstart/201-web-app-postgres-keyvault/mysql.tf index 73d0eec0..aeab99bb 100644 --- a/quickstart/201-web-app-postgres-keyvault/mysql.tf +++ b/quickstart/201-web-app-postgres-keyvault/mysql.tf @@ -1,29 +1,34 @@ -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}" +resource "azurerm_mysql_server" "web_app_backend" { + name = "${replace(random_pet.prefix.id, "-", "")}pgserver" + location = azurerm_resource_group.web_app_mysql_rg.location + resource_group_name = azurerm_resource_group.web_app_mysql_rg.name + tags = azurerm_resource_group.web_app_mysql_rg.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}" - } + administrator_login = "${var.prefix}-admin" + administrator_login_password = random_password.password.result + + sku_name = var.database_sku_name + storage_mb = var.database_sku_size_MB + version = var.mysql_version + + ssl_enforcement_enabled = false + ssl_minimal_tls_version_enforced = "TLSEnforcementDisabled" } -resource "azurerm_mysql_database" "webAppBackend" { - name = "${var.siteName}database" - resource_group_name = "${azurerm_resource_group.webAppMySqlRg.name}" +resource "azurerm_mysql_database" "web_app_backend" { + name = "${replace(random_pet.prefix.id, "-", "")}database" + resource_group_name = azurerm_resource_group.web_app_mysql_rg.name - server_name = "${azurerm_mysql_server.webAppBackend.name}" - charset = "utf8" - collation = "utf8_unicode_ci" + server_name = azurerm_mysql_server.web_app_backend.name + charset = "utf8mb4" + collation = "utf8mb4_unicode_ci" +} + +resource "random_password" "password" { + length = 20 + min_lower = 1 + min_upper = 1 + min_numeric = 1 + min_special = 1 + special = false } \ No newline at end of file diff --git a/quickstart/201-web-app-postgres-keyvault/output.tf b/quickstart/201-web-app-postgres-keyvault/output.tf deleted file mode 100644 index 3a0f203e..00000000 --- a/quickstart/201-web-app-postgres-keyvault/output.tf +++ /dev/null @@ -1,15 +0,0 @@ -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/201-web-app-postgres-keyvault/outputs.tf b/quickstart/201-web-app-postgres-keyvault/outputs.tf new file mode 100644 index 00000000..258e9620 --- /dev/null +++ b/quickstart/201-web-app-postgres-keyvault/outputs.tf @@ -0,0 +1,24 @@ +output "web_app_url" { + value = azurerm_app_service.main.default_site_hostname +} + +output "database_name" { + value = azurerm_mysql_database.web_app_backend.name +} + +output "database_server_name" { + value = azurerm_mysql_server.web_app_backend.fqdn +} + +output "app_service_plan_name" { + value = azurerm_app_service_plan.web_app_frontend.name +} + +output "mysql_server_admin_name" { + value = azurerm_mysql_server.web_app_backend.administrator_login +} + +output "mysql_server_admin_password" { + sensitive = true + value = azurerm_mysql_server.web_app_backend.administrator_login_password +} \ No newline at end of file diff --git a/quickstart/201-web-app-postgres-keyvault/providers.tf b/quickstart/201-web-app-postgres-keyvault/providers.tf index 3d733e28..550524d7 100644 --- a/quickstart/201-web-app-postgres-keyvault/providers.tf +++ b/quickstart/201-web-app-postgres-keyvault/providers.tf @@ -1,3 +1,18 @@ +terraform { + required_version = ">= 1.0" + + required_providers { + azurerm = { + source = "hashicorp/azurerm" + version = ">= 3.0, < 4.0" + } + random = { + source = "hashicorp/random" + version = ">= 3.0" + } + } +} + provider "azurerm" { - version = "~>1.17" + features {} } \ No newline at end of file diff --git a/quickstart/201-web-app-postgres-keyvault/terraform.tfvars b/quickstart/201-web-app-postgres-keyvault/terraform.tfvars index 63898d17..b3688492 100644 --- a/quickstart/201-web-app-postgres-keyvault/terraform.tfvars +++ b/quickstart/201-web-app-postgres-keyvault/terraform.tfvars @@ -1,12 +1,8 @@ -rg = "mcg623webAppMysql" -loc = "eastus2" -tags = { - type = "sample" - services = "MySql, WebApp, Azure database" -} +loc = "eastus2" +tags = { + type = "sample" + services = "MySql, WebApp, Azure database" +} -administratorLogin = "markg" -siteName = "mcgecd69mysql" - -servicePlanTier = "Standard" -servicePlanSize = "S1" \ No newline at end of file +service_plan_tier = "Standard" +service_plan_size = "S1" \ No newline at end of file diff --git a/quickstart/201-web-app-postgres-keyvault/variables.tf b/quickstart/201-web-app-postgres-keyvault/variables.tf index 42a0d171..cca0827d 100644 --- a/quickstart/201-web-app-postgres-keyvault/variables.tf +++ b/quickstart/201-web-app-postgres-keyvault/variables.tf @@ -1,65 +1,50 @@ -variable "rg" { - description = "Azure resource group for all resources." -} - -variable "siteName" { - description = "Name of azure web app" +variable "prefix" { + type = string + default = "pgkv" + description = "Prefix of the resource name" } variable "tags" { + type = map(any) + default = { + type = "sample" + services = "MySql, WebApp, Azure database" + } description = "Azure Tags for all resources." - default = {} } - -variable "administratorLogin" { - description = "Database administrator login name" +variable "database_sku_name" { + type = string + default = "GP_Gen5_2" + description = "The name of the SKU, follows the tier + family + cores pattern (e.g. `B_Gen4_1`, `GP_Gen5_8`)." } -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" +variable "database_sku_size_MB" { + type = number default = 5120 + description = "Azure database for MySQL Sku Size" } -variable "databaseSkuTier" { - description = "Azure database for MySQL pricing tier" - default = "GeneralPurpose" -} - -variable "mysqlVersion" { +variable "mysql_version" { + type = string + default = "5.7" description = "MySQL version" - default = "5.6" } variable "loc" { + type = string + default = "eastus" description = "Location for all resources." - default = "eastus2" } -variable "servicePlanTier" { +variable "service_plan_tier" { + type = string + default = "Standard" description = "Azure managed application service plan pricing tier" } -variable "servicePlanSize" { +variable "service_plan_size" { + type = string + default = "S1" description = "Azure managed application service plan instance size" } diff --git a/quickstart/201-web-app-postgres-keyvault/webapp.tf b/quickstart/201-web-app-postgres-keyvault/webapp.tf index 416eab5e..9a393641 100644 --- a/quickstart/201-web-app-postgres-keyvault/webapp.tf +++ b/quickstart/201-web-app-postgres-keyvault/webapp.tf @@ -1,25 +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}" +resource "azurerm_app_service_plan" "web_app_frontend" { + name = "${replace(random_pet.prefix.id, "-", "")}serviceplan" + resource_group_name = azurerm_resource_group.web_app_mysql_rg.name + location = azurerm_resource_group.web_app_mysql_rg.location + tags = azurerm_resource_group.web_app_mysql_rg.tags sku { - tier = "${var.servicePlanTier}" - size = "${var.servicePlanSize}" + tier = var.service_plan_tier + size = var.service_plan_size } } -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}" +resource "azurerm_app_service" "main" { + name = "${replace(random_pet.prefix.id, "-", "")}service" + location = azurerm_resource_group.web_app_mysql_rg.location + resource_group_name = azurerm_resource_group.web_app_mysql_rg.name + tags = azurerm_resource_group.web_app_mysql_rg.tags - app_service_plan_id = "${azurerm_app_service_plan.webAppFrontend.id}" + app_service_plan_id = azurerm_app_service_plan.web_app_frontend.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}" + value = "Database=${azurerm_mysql_database.web_app_backend.name};Data Source=${azurerm_mysql_server.web_app_backend.fqdn};User Id=${random_pet.prefix.id}-admin@${azurerm_mysql_server.web_app_backend.name};Password=${random_password.password.result}" } } \ No newline at end of file