Terraform for_each map of objects

Curently I'm trying to build dev and production environment without duplicating resource blocks. I have found that I can crate map of objects and use for loop for this. For this I have created this piece of code that was

variable "sqlserver" {
  type = map(object({
    name     = string
    username = string
    password = string
  }))
}

sqlserver = {
  "dev" = {
    name     = "devsonovasqlserver"
    username = "dev_username"
    password = "biaJB8wQJb4n!RwG"
  }
  "prd" = {
    name     = "testexamplesqlsonova"
    username = "prd_username"
    password = "biaJB8wQJb4asdan!RwG"
  }
}

resource "azurerm_sql_server" "sql_server" {
  for_each = var.sqlserver

  name                         = each.value["name"]
  resource_group_name          = var.dev_main_rg
  location                     = var.location
  version                      = "12.0"
  administrator_login          = each.value["username"]
  administrator_login_password = each.value["password"]

}

This sadly raise Error like

╷
│ Error: Incorrect attribute value type
│ 
│   on main.tf line 56, in resource "azurerm_sql_server" "dev_sql_server":
│   56:   name                         = var.sqlserver.name
│     ├────────────────
│     │ var.sqlserver.name is a object, known only after apply
│ 
│ Inappropriate value for attribute "name": string required.
╵

Solution 1:

Your code is valid. When I copy it to a project of my own it works fine. I guess you have something else in your files that make it work different from what is shown here.