Skip to content

docs: document the datumctl dns plugin and Datum's DNS model - #52

Draft
scotwells wants to merge 2 commits into
mainfrom
docs/dns-guides
Draft

docs: document the datumctl dns plugin and Datum's DNS model#52
scotwells wants to merge 2 commits into
mainfrom
docs/dns-guides

Conversation

@scotwells

Copy link
Copy Markdown
Contributor

Draft — the content is complete and checked, but see Before this merges below.

Datum hosts authoritative DNS, but the docs stopped at a feature list and a glossary. Nothing explained how a domain becomes a working zone, and the datumctl dns plugin — how most people will actually drive it — was not documented at all.

datumctl

One new page, datumctl/plugins/dns, placed after using-plugins so the general plugin mechanics come first. It follows the journey: install, create a zone, point the registrar at Datum's nameservers, add and change records, import an existing zone file, export, and script against the output.

Domains & DNS

The section grows from two pages to seven:

page what it covers
dns overview and the end-to-end flow
domains unchanged apart from a verification pointer
domain-verification new — the gate that decides whether a zone is provisioned
dns-zones scope, status, delegation, records Datum manages for you
dns-records record sets, supported types, names, values, TTLs
alias-records the existing ALIAS explainer, moved out intact and extended
migrate-dns moving a zone in from another provider, and out again

Domain verification gets its own page because it is the single thing most likely to leave someone stuck, and it was documented nowhere.

A correction outside this section

alb/dns-setup.mdx told readers that a zone stuck at PROGRAMMED=False meant the domain was not delegated, and to change their nameservers at the registrar. Delegation happens at the registrar and has no bearing on whether Datum provisions a zone — anyone following that advice changes their nameservers and stays stuck. The usual cause is an unverified domain. That row now names the real cause and links to the new verification page. Two lines changed; the rest of the page is untouched.

Rejected does not mean refused

Worth calling out for review, because it is counter-intuitive and now has its own section: a zone whose domain is not yet verified reports Rejected, not Pending. The word reads as a permanent refusal, and readers will assume they did something wrong, when the real state is "waiting for you to publish a TXT record".

How this was checked

Every command, flag, argument, and status word comes from the released plugin's own --help output or from the operator source; no console output was invented. All internal links resolve. docs.json is a seven-line change and remains valid JSON.

Several things were deliberately left unwritten rather than guessed: DNSSEC, propagation times, zone and record limits, portal screens, nameserver assignment mechanics, and whether an ALIAS can share a name with other record types.

Before this merges

The CLI guide documents v0.7.0-dev.1, the current published preview, and says so on the page. Behaviour that is merged but unreleased is deliberately absent — in particular --no-managed and the table shortening long names and values (dns-operator#107, #108, #109). Once those ship in a new tag, that page needs a follow-up.

Two open questions for a reviewer who knows the product:

  • Does every zone get the same four nameservers, or is assignment per-zone? The docs say "the nameservers Datum assigned to your zone" and only repeat the published ns1ns4.datumdomains.net list that was already there.
  • Verification is described as one-time, since a verified domain is never re-checked and the token is cleared on success. That is read off the implementation, not a product statement — if re-verification is ever intended, that sentence needs revisiting.

Datum hosts authoritative DNS, but the documentation stopped at a feature list and a glossary. Nothing explained how a domain becomes a working zone, and the `datumctl dns` plugin — which is how most people will drive it — was not documented at all.

The datumctl section gains a task-oriented guide for the plugin: install it, create a zone, point the registrar at Datum's nameservers, add and change records, import an existing zone file, export, and script against the output.

The Domains & DNS section becomes real product documentation. Domain ownership verification gets its own page, because it is the gate that decides whether a zone is provisioned at all and it was previously undocumented. Zones, records, ALIAS, and migrating a zone in or out each get a page, and the overview explains how a domain and a zone relate.

One correction outside the section: the ALB DNS setup page attributed a zone stuck at PROGRAMMED=False to missing delegation and told readers to change their nameservers. Delegation happens at the registrar and has no bearing on whether Datum provisions a zone; the usual cause is an unverified domain. That row now names the real cause and links to the verification page.

Every command, flag, and status word is taken from the released plugin's own help output or from the operator's source. Behaviour that is not yet released is deliberately absent.
@mintlify

mintlify Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
Datum 🟢 Ready View Preview Aug 26, 2026, 2:21 AM

The DNS page sat in the same "Plugins" group as the four pages about plugin machinery — installing, trusting, adding catalogs, publishing them, writing your own. A reader looking for what DNS can do had to pick it out from a list otherwise about how plugins work at all.

Splitting the group separates the two questions. "Available plugins" answers what you can install and comes first, since that is what most people arrive wanting; "Managing plugins" keeps the mechanics together below it. The split also gives compute and any later plugin an obvious home rather than lengthening a single mixed list.

The page is now "DNS" in the sidebar. Under a heading that already says these are plugins, "DNS plugin" repeated the word for no gain, and the surrounding pages follow the same split of a Title Case title and a sentence case sidebar entry.

Adds one line to Using Plugins pointing at the new group, so the plugins with real guides are discoverable from the page that explains searching for them.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant