Skip to content

Managed DNS

Frostmoln Managed DNS hosts authoritative DNS for your domains. You create a zone for a domain and manage its records; the platform runs the authoritative name servers. Each zone is assigned its own delegation name server set — you point your domain at those name servers at your registrar, and Frostmoln answers for it.

Pilot — access is granted per tenant

Managed DNS is rolled out as a pilot. It appears in the portal only for tenants that have been granted the dns entitlement — if you don't see DNS in the navigation, it isn't enabled for your tenant yet. Contact support to request access (there is no self-service enablement during the pilot).

Public resolution is not live yet

You can already create zones and records, but the public authoritative name servers are not serving on the internet yet. Until they are, a delegated domain will not resolve through Frostmoln. Set your zones up now if you like; delegate at your registrar once support confirms the name servers are live.

How it works

  • A zone is one domain you host with us, named by its fully qualified domain name in lowercase, ending with a dot — e.g. example.com..
  • A record (recordset) is one (name, type) pair in a zone, with a single TTL and one or more values. The record name is a lowercase short label relative to the zone (www, mail), or @ for the zone apex (the domain itself).
  • On creation, each zone gets a delegation name server set. The customer delegates their domain to that zone's name servers — a zone name is not a scarce global, so any tenant can host any name; the parent delegation decides which copy resolves.

Supported record types: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, PTR. For MX and SRV, the priority is part of the value string (e.g. 10 mail.example.com.).

Create a zone

In the portal, go to DNS → Zones → Create and enter the zone name (a lowercase FQDN ending with a dot) and an SOA contact email. Optionally set a default TTL.

From the CLI

bash
fm dns zone create --name example.com. --email admin@example.com

# See the zone, including its delegation name servers:
fm dns zone get <zone-id>

fm dns zone list

With Terraform

hcl
resource "frostmoln_dns_zone" "example" {
  name  = "example.com."
  email = "admin@example.com"
  ttl   = 3600
}

Zone tags

Attach key-value tags to a zone to organize and filter your zones — for example by environment or owning team. Edit them in the portal's zone tags editor, or set them from the CLI or Terraform. The CLI --tag flag is repeatable; on fm dns zone update it replaces the whole tag set, and an empty --tag "" clears all tags.

bash
fm dns zone create --name example.com. --email admin@example.com \
  --tag env=prod --tag team=web
hcl
resource "frostmoln_dns_zone" "example" {
  name  = "example.com."
  email = "admin@example.com"
  tags  = { env = "prod", team = "web" }
}

A zone may have up to 32 tags. Each key is 1-64 characters matching ^[a-zA-Z0-9]([a-zA-Z0-9._:/-]*[a-zA-Z0-9])?$; each value is at most 256 bytes.

Delegate your domain

The headline step: point your domain at the zone's name servers, at the registrar where you bought the domain. Read the name servers from whichever tool you use:

bash
# CLI — the zone detail prints the delegation name servers:
fm dns zone get <zone-id>
hcl
# Terraform — name_servers is a computed (read-only) attribute, the same shape as
# aws_route53_zone.name_servers:
output "delegation_name_servers" {
  value = frostmoln_dns_zone.example.name_servers
}

# Or look up an existing zone with the data source:
data "frostmoln_dns_zone" "example" {
  name = "example.com."
}

output "ns" {
  value = data.frostmoln_dns_zone.example.name_servers
}

In the portal, the zone detail page shows the same name servers ready to copy-paste. Set exactly those name servers as your domain's NS records at the registrar. Delegation can take up to a day to propagate.

Manage records

A record is a recordset — one name + type with all its values together. Use @ for the apex and repeat values for multiple answers.

From the CLI

bash
# An A record with two values:
fm dns record create <zone-id> --name www --type A \
  --value 203.0.113.10 --value 203.0.113.11

# An MX record at the apex (priority is part of the value):
fm dns record create <zone-id> --name @ --type MX --value "10 mail.example.com."

fm dns record list <zone-id>

# Update replaces the whole value set; only the flags you pass change:
fm dns record update <zone-id> <record-id> --ttl 300

fm dns record delete <zone-id> <record-id>

With Terraform

hcl
resource "frostmoln_dns_record" "www" {
  zone_id = frostmoln_dns_zone.example.id
  name    = "www"
  type    = "A"
  records = ["203.0.113.10", "203.0.113.11"]
  ttl     = 300
}

records is a set, and the record id is a stable UUID that survives value and TTL edits. Import an existing record with {zone_id}/{record_id}:

bash
terraform import frostmoln_dns_record.www <zone-id>/<record-id>

Lifecycle and limits

  • Naming is strict: zone names are lowercase FQDNs ending with a dot; record names are lowercase, or @ for the apex.
  • Moving a zone between tenants is a plain delete-then-create — there is no zone transfer in the customer API.
  • Deleting a zone removes all of its records.
  • Pricing will be announced before general availability.