Terraform - Add tags to failover SQL databases

260 Views Asked by At

I am trying to figure out a way to add tags to the failover DBs created with the help of terraform registry - azurerm_mssql_failover_group.

if I use the tags field mentioned as part of terraform documentation, it adds tags to the failover group but it does not set tags on the failover databases created.

My code for the resource group is as below

resource "azurerm_mssql_failover_group" "sql-database-failover" {

  name      = "sqldatabasefailover1"
  server_id = "Id of Primary SQL Server"
  databases = [
    "Id of primary SQL dbs"
  ]
  partner_server {
    id = "Id of secondary (failover) SQL server"
  }
  read_write_endpoint_failover_policy {
    mode          = "Automatic"
    grace_minutes = 60
  }
  tags            = local.common_tags

}

I tried looking for terraform registry which can help us add tags to the already present DB but could not find any. Any help will be appreciated.

Regards Tarun

1

There are 1 best solutions below

2
kavyaS On

I tried to reproduce the same in my environment .

I created local tags as below and tried to add to failover group.

Code referred from : azurerm_sql_failover_group | Resources | hashicorp/azurerm | Terraform Registry

Code:

locals {
  resource_tags = {
    project_name = "failovergroup",
    category     = "devbackupresource"
  }
}


resource "azurerm_mssql_server" "primary" {
  name                         = "ka-sql-primary"
  resource_group_name          = data.azurerm_resource_group.example.name
  location                     = "southeastasia"
  version                      = "12.0"
  administrator_login          = "sqladmin"
  administrator_login_password = "xxx"
}

resource "azurerm_mssql_server" "secondary" {
  name                         = "ka-sql-secondary"
  resource_group_name          = data.azurerm_resource_group.example.name
  location                     = "westeurope"
  version                      = "12.0"
  administrator_login          = "sqladmin"
  administrator_login_password = "xxx"
}

resource "azurerm_mssql_database" "db1" {
  name                = "kadb1"
  server_id  = azurerm_mssql_server.primary.id
}



resource "azurerm_mssql_failover_group" "example" {
  name                = "kav-example-failover-group"
 server_id = azurerm_mssql_server.primary.id
  databases           = [azurerm_mssql_database.db1.id]
  tags = local.resource_tags

  partner_server {
    id = azurerm_mssql_server.secondary.id
  }

  read_write_endpoint_failover_policy {
    mode          = "Automatic"
    grace_minutes = 60
  }
}

But the tags are not added to secondaryDb which is intended for failover group.

enter image description here

enter image description here

You can use the tags in Secondary Db resource block ” azurerm_mssql_server” for secondary as below.

locals {
  resource_tags = {
     ...
  }
}
 

resource "azurerm_mssql_server" "secondary" {
  name                         = "ka-sql-secondary"
  resource_group_name          = data.azurerm_resource_group.example.name
  location                     = "westeurope"
  version                      = "12.0"
  administrator_login          = "sqladmin"
  administrator_login_password = "pa$$w0rd"
  tags                         = local.resource_tags
}


resource "azurerm_mssql_failover_group" "example" {
  name                = "kav-example-failover-group
 server_id = azurerm_mssql_server.primary.id
  databases           = [azurerm_mssql_database.db1.id]
   ...
}

This created tags to my secondary sql server in azure .

enter image description here


Edit:

tag-support-microsoftsql

enter image description here

See Auto-failover groups limitations .One may need to create tags manually .

Also Note: Database restore operations don't restore the tags of the original database.