107 lines
3.2 KiB
HCL
107 lines
3.2 KiB
HCL
# Generate random resource group name
|
|
resource "random_pet" "rg_name" {
|
|
prefix = var.resource_group_name_prefix
|
|
}
|
|
|
|
resource "azurerm_resource_group" "rg" {
|
|
location = var.resource_group_location
|
|
name = random_pet.rg_name.id
|
|
}
|
|
|
|
# Generate random value for the name
|
|
resource "random_string" "name" {
|
|
length = 8
|
|
lower = true
|
|
numeric = false
|
|
special = false
|
|
upper = false
|
|
}
|
|
|
|
# Generate random value for the login password
|
|
resource "random_password" "password" {
|
|
length = 8
|
|
lower = true
|
|
min_lower = 1
|
|
min_numeric = 1
|
|
min_special = 1
|
|
min_upper = 1
|
|
numeric = true
|
|
override_special = "_"
|
|
special = true
|
|
upper = true
|
|
}
|
|
|
|
# Manages the Virtual Network
|
|
resource "azurerm_virtual_network" "default" {
|
|
address_space = ["10.0.0.0/16"]
|
|
location = azurerm_resource_group.rg.location
|
|
name = "vnet-${random_string.name.result}"
|
|
resource_group_name = azurerm_resource_group.rg.name
|
|
}
|
|
|
|
# Manages the Subnet
|
|
resource "azurerm_subnet" "default" {
|
|
address_prefixes = ["10.0.2.0/24"]
|
|
name = "subnet-${random_string.name.result}"
|
|
resource_group_name = azurerm_resource_group.rg.name
|
|
virtual_network_name = azurerm_virtual_network.default.name
|
|
service_endpoints = ["Microsoft.Storage"]
|
|
|
|
delegation {
|
|
name = "fs"
|
|
|
|
service_delegation {
|
|
name = "Microsoft.DBforMySQL/flexibleServers"
|
|
actions = [
|
|
"Microsoft.Network/virtualNetworks/subnets/join/action",
|
|
]
|
|
}
|
|
}
|
|
}
|
|
|
|
# Enables you to manage Private DNS zones within Azure DNS
|
|
resource "azurerm_private_dns_zone" "default" {
|
|
name = "${random_string.name.result}.mysql.database.azure.com"
|
|
resource_group_name = azurerm_resource_group.rg.name
|
|
}
|
|
|
|
# Enables you to manage Private DNS zone Virtual Network Links
|
|
resource "azurerm_private_dns_zone_virtual_network_link" "default" {
|
|
name = "mysqlfsVnetZone${random_string.name.result}.com"
|
|
private_dns_zone_name = azurerm_private_dns_zone.default.name
|
|
resource_group_name = azurerm_resource_group.rg.name
|
|
virtual_network_id = azurerm_virtual_network.default.id
|
|
|
|
depends_on = [azurerm_subnet.default]
|
|
}
|
|
|
|
# Manages the MySQL Flexible Server
|
|
resource "azurerm_mysql_flexible_server" "default" {
|
|
location = azurerm_resource_group.rg.location
|
|
name = "mysqlfs-${random_string.name.result}"
|
|
resource_group_name = azurerm_resource_group.rg.name
|
|
administrator_login = random_string.name.result
|
|
administrator_password = random_password.password.result
|
|
backup_retention_days = 7
|
|
delegated_subnet_id = azurerm_subnet.default.id
|
|
geo_redundant_backup_enabled = false
|
|
private_dns_zone_id = azurerm_private_dns_zone.default.id
|
|
sku_name = "GP_Standard_D2ds_v4"
|
|
version = "8.0.21"
|
|
|
|
high_availability {
|
|
mode = "SameZone"
|
|
}
|
|
maintenance_window {
|
|
day_of_week = 0
|
|
start_hour = 8
|
|
start_minute = 0
|
|
}
|
|
storage {
|
|
iops = 360
|
|
size_gb = 20
|
|
}
|
|
|
|
depends_on = [azurerm_private_dns_zone_virtual_network_link.default]
|
|
}
|