Skip to content

StatCan/terraform-azurerm-flex-mysql

Terraform for Azure Managed Database MySQL Flexible Server

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

Usage

NOTE: It is highly recommended to pin the module version to avoid any possible breaking changes. When upgrading check the CHANGELOG and test by carefully checking the plan.

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

Requirements

Name Version
terraform ~> 1.5.7
azurerm ~> 4.26

Providers

Name Version
azurerm 4.41.0

Modules

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

Resources

Name Type
azurerm_key_vault_access_policy.cmk resource
azurerm_key_vault_access_policy.runner_manage_keys resource
azurerm_key_vault_key.cmk resource
azurerm_monitor_diagnostic_setting.mysql_server resource
azurerm_mysql_flexible_database.mysql resource
azurerm_mysql_flexible_server.mysql resource
azurerm_mysql_flexible_server_active_directory_administrator.this resource
azurerm_mysql_flexible_server_configuration.mysql resource
azurerm_mysql_flexible_server_firewall_rule.mysql resource
azurerm_role_assignment.sa resource
azurerm_storage_account.mysql resource
azurerm_storage_container.mysql resource
azurerm_user_assigned_identity.mysql resource
azurerm_client_config.current data source
azurerm_key_vault.pointer data source
azurerm_key_vault_secret.pointer_sqladmin_password data source
azurerm_monitor_diagnostic_categories.mysql_server data source

Inputs

Name Description Type Default Required
active_directory_administrator n/a
list(object({
object_id = optional(string)
login = optional(string)
}))
[] no
administrator_login The Administrator Login for the MySQL Flexible Server. string n/a yes
administrator_password The Password associated with the administrator_login for the MySQL Flexible Server. string 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
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
})
null no
environment The environment used for keyvault access. string n/a yes
firewall_rules Specifies the Start IP Address associated with this Firewall Rule. list(string) n/a yes
geo_redundant_backup_enabled Is Geo-Redundant backup enabled on the MySQL Flexible Server. bool false no
iops The storage IOPS for the MySQL Flexible Server. number n/a yes
ip_rules List of public IP or IP ranges in CIDR Format. list(string) n/a yes
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. string null no
kv_pointer_rg The key vault resource group to be used when kv_pointer_enable is set to true. string null no
kv_pointer_sqladmin_password The sqladmin password to be looked up in key vault when kv_pointer_enable is set to true. string null no
kv_private_endpoints The information required to create a private endpoint for the Key Vault.
list(object({
sub_resource_name = optional(string, "vault")
subnet_id = string
private_dns_zone_id = string
}))
[] no
kv_public_network_access_enabled (Required) Whether or not public network access is allowed for the key vault. bool false 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)
{
"audit_log_enabled": "ON",
"audit_log_events": "CONNECTION_V2, ADMIN, DDL, DCL, DML_NONSELECT",
"innodb_buffer_pool_size": "12884901888",
"max_allowed_packet": "536870912",
"max_connect_errors": "20",
"table_definition_cache": "5000",
"table_open_cache": "5000"
}
no
mysql_version The version of the MySQL Flexible Server. string "8.0.21" no
name The name of the MySQL Flexible Server. string n/a yes
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
project Name of client project string n/a yes
public_network_access (Optional) Specifies whether this MySQL Flexible Server is publicly accessible. string "Disabled" no
resource_group_name The name of the resource group in which to create the MySQL Flexible Server. string n/a yes
sa_create_log Creates a storage account to be used for diagnostics logging of the MySQL 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
storage_account_name Name of the storage account used for diagnostics (optional, if not provided the name is auto-generated). string null no
storagesize_gb Specifies the storage size in GB for the MySQL Flexible Server. 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

Change Log

About

Terraform module to deploy a managed MySQL Flexible server on Azure

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages