Skip to content

Terraform module to deploy a managed MySQL Flexible server on Azure

License

Notifications You must be signed in to change notification settings

StatCan/terraform-azurerm-flex-mysql

Repository files navigation

Terraform for Azure Managed Database MySQL Flexible Server

Creates a MySQL instance using the Azure Database for MySQL - Flexible Server.

Usage

Examples for this module along with various configurations can be found in the examples/ folder.

Requirements

Name Version
terraform >= 1.3.0, < 2.0.0
azurerm >= 3.15, < 4.0

Providers

Name Version
azurerm >= 3.15, < 4.0

Modules

Name Source Version
enc_key_vault git::https://gitlab.k8s.cloud.statcan.ca/cloudnative/platform/terraform/terraform-azure-key-vault.git v1.1.4

Inputs

Name Description Type Default Required
administrator_login The Administrator Login for the MySQL Flexible Server. any n/a yes
administrator_password The Password associated with the administrator_login for the MySQL Flexible Server. any n/a yes
databases The name, collation, and charset of the MySQL database(s). (defaults: charset='utf8', collation='utf8_unicode_ci') map(map(string)) n/a yes
firewall_rules Specifies the Start IP Address associated with this Firewall Rule. list(string) n/a yes
iops The storage IOPS for the MySQL Flexible Server. any n/a yes
ip_rules List of public IP or IP ranges in CIDR Format. list(string) n/a yes
name The name of the MySQL Flexible Server. any n/a yes
resource_group The name of the resource group in which to create the MySQL Flexible Server. any n/a yes
delegated_subnet_id The subnet where you want the database created. The subnet must be delegated to Microsoft.DBforMySQL/flexibleServers. string null no
diagnostics Diagnostic settings for those resources that support it.
object({
destination = string
eventhub_name = string
logs = list(string)
metrics = list(string)
})
null no
geo_redundant_backup_enabled Is Geo-Redundant backup enabled on the PostgreSQL Flexible Server. bool false no
kv_pointer_enable Flag kv_pointer_enable can either be true (state from key vault), or false (state from terraform). bool false no
kv_pointer_name The key vault name to be used when kv_pointer_enable is set to true. any null no
kv_pointer_rg The key vault resource group to be used when kv_pointer_enable is set to true. any null no
kv_pointer_sqladmin_password The sqladmin password to be looked up in key vault when kv_pointer_enable is set to true. any null no
kv_private_endpoints The name of an existing subnet to deploy and allocate private IP addresses from a virtual network. It is used to create a private endpoint between the keyvault the module creates and the specified subnet.
list(object({
subnet_id = optional(string) // mutually exclusive with the vnet_name, vnet_rg_name and subnet_name fields
vnet_name = optional(string)
vnet_rg_name = optional(string)
subnet_name = optional(string)
dns_zone_rg_name = optional(string, "network-management-rg")
}))
[] no
kv_subnet_ids The subnets for the key vault. list(string) null no
location Specifies the supported Azure location where the resource exists. string "canadacentral" no
mysql_configurations n/a map(string)
{
"innodb_buffer_pool_size": "12884901888",
"max_allowed_packet": "536870912",
"table_definition_cache": "5000",
"table_open_cache": "5000"
}
no
mysql_version The version of the MySQL Flexible Server. string "8.0.21" no
private_dns_zone_id The ID of the private DNS zone to create the MySQL Flexible Server. The private DNS zone must end with the suffix .mysql.database.azure.com. string null no
public_network_access_enabled (Required) Whether or not public network access is allowed. bool false no
sa_create_log Creates a storage account to be used for diagnostics logging of the PostgreSQL database created if the variable is set to true. bool false no
sa_subnet_ids The subnets for the storage account. list(string) null no
sku_name Specifies the SKU Name for this MySQL Flexible Server. string "GP_Standard_D4ds_v4" no
storagesize_gb Specifies the version of MySQL to use. number 128 no
tags A mapping of tags to assign to the resource. map(string)
{
"environment": "dev"
}
no

Outputs

Name Description
administrator_login n/a
fqdn n/a
id n/a

History

Date Release Change
2023-04-04 v0.3.0 Breakup subnet logic to individual components
2023-02-01 v0.2.0 Standards alignment and Customer Managed Key Support
2022-06-01 v0.1.0 Initial commit

About

Terraform module to deploy a managed MySQL Flexible server on Azure

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages