main.custom_domains.tf (41 lines of code) (raw):

resource "azurerm_static_web_app_custom_domain" "this" { for_each = var.custom_domains domain_name = (each.value.validation_type == "cname-delegation" && each.value.cname_name != null && each.value.cname_name != "" && each.value.cname_zone_name != null && each.value.cname_zone_name != "") ? coalesce(each.value.domain_name, "${each.value.cname_name}.${each.value.cname_zone_name}") : each.value.domain_name static_web_app_id = azurerm_static_web_app.this.id validation_type = each.value.validation_type depends_on = [ azurerm_static_web_app.this, azurerm_dns_cname_record.this, azurerm_dns_txt_record.this ] } resource "azurerm_dns_cname_record" "this" { for_each = { for cname, cname_values in var.custom_domains : cname => cname_values if cname_values.create_cname_records } name = each.value.cname_name resource_group_name = coalesce(each.value.resource_group_name, var.resource_group_name) ttl = each.value.ttl zone_name = each.value.cname_zone_name record = coalesce(each.value.cname_record, azurerm_static_web_app.this.default_host_name) tags = var.tags target_resource_id = each.value.cname_target_resource_id depends_on = [ azurerm_static_web_app.this ] } resource "azurerm_dns_txt_record" "this" { for_each = { for txt, txt_values in var.custom_domains : txt => txt_values if txt_values.create_txt_records } name = each.value.txt_name resource_group_name = coalesce(each.value.resource_group_name, var.resource_group_name) ttl = each.value.ttl zone_name = each.value.txt_zone_name tags = var.tags dynamic "record" { for_each = each.value.txt_records content { value = record.value.value } } depends_on = [ azurerm_static_web_app.this ] }