DNS (kind: dns)
DNS zones and records. A single file can declare multiple independently-tagged zones.
Schema
spec.provider— optional DNS provider name (e.g.cloudflare,inwx,route53) — documentation onlyspec.zones[], each:name— the domain name (e.g.example.com)ttl— default TTL in seconds for records in this zone (default3600)records[], each{name, type, value, ttl, priority, description, notes}type—A,AAAA,CNAME,MX,TXT,SRV,NS,PTR,CAAvalue— a literal, or a${var:}/${secret:}/${feature:}tokenpriority— only valid forMX/SRVrecords
configuration— raw provisioner passthroughdefault_tags/custom_tags— cloud tagscustom— free-form data
Example
apiVersion: strata.huybrechts.xyz/v2
kind: dns
meta:
name: example-dns
spec:
provider: cloudflare
zones:
- name: example.com
ttl: 3600
records:
- name: "@"
type: A
value: "203.0.113.1"
- name: www
type: A
value: "${var:PUBLIC_IP}"
default_tags:
environment: example
Notes
v1 also had an
output_keyfield, binding a record’s value to a preceding deployment stage’s provisioner output. Not ported yet — it needs a shared runtime “Context” store that doesn’t exist in v2 (see ADR-0006).Azure-style private DNS zones (VNet links, writing records into a pre-existing/externally-owned zone) are deliberately modeled via
configuration, not dedicated fields — see How To: Model Azure Private DNS Zones.