tf/mysql.tf (43 lines of code) (raw):
resource "azurerm_mysql_flexible_server" "mysql" {
count = local.create_database ? 1 : 0
name = local.db_name
location = local.create_rg ? azurerm_resource_group.rg[0].location : data.azurerm_resource_group.rg[0].location
resource_group_name = local.create_rg ? azurerm_resource_group.rg[0].name : data.azurerm_resource_group.rg[0].name
administrator_login = local.database_user
administrator_password = random_password.db_password[0].result
delegated_subnet_id = local.create_database_subnet ? azurerm_subnet.database[0].id : data.azurerm_subnet.database[0].id
sku_name = "B_Standard_B2ms"
version = "8.0.21"
backup_retention_days = 7
geo_redundant_backup_enabled = false
storage {
iops = 360
size_gb = 20
auto_grow_enabled = true
}
lifecycle {
ignore_changes = [
zone
]
}
}
resource "random_password" "db_password" {
count = local.create_database ? 1 : 0
length = 16
special = false
min_lower = 1
min_upper = 1
min_numeric = 1
}
resource "azurerm_key_vault_secret" "database_password" {
count = local.create_database ? 1 : 0
depends_on = [time_sleep.delay_create, azurerm_key_vault_access_policy.admin] # As policies are created in the same deployment add some delays to propagate
name = format("%s-password", azurerm_mysql_flexible_server.mysql[0].administrator_login)
value = random_password.db_password[0].result
key_vault_id = azurerm_key_vault.azhop.id
lifecycle {
ignore_changes = [
value
]
}
}