
dnscontrol v5.0.0-rc9
Infrastructure as code for DNS!
DNSControl
DNSControl is Infrastructure as Code for DNS. It includes a full-featured configuration language (Javascript-compatible), plus "plug-ins" that speak to DNS provider APIs such as AWS Route 53, Cloudflare, and Gandi. It can send the same DNS records to multiple providers. It runs anywhere Go runs (Linux, macOS, Windows). The provider model is extensible, so more providers can be added.
An Example
dnsconfig.js:
// define our registrar and providers
var REG_NAMECOM = NewRegistrar("ndc_main");
var DSP_ROUTE53 = NewDnsProvider("r53_main");
D("example.com", REG_NAMECOM, DnsProvider(DSP_ROUTE53),
A("@", "1.2.3.4"),
CNAME("www","@"),
MX("@",5,"mail.myserver.com."),
A("test", "5.6.7.8")
)
Running dnscontrol preview will talk to the providers (here name.com as registrar and route 53 as the dns host), and determine what changes need to be made.
Running dnscontrol push will make those changes with the provider and my dns records will be correctly updated.
The easiest way to run DNSControl is to use the Docker container:
docker run --rm -it -v "$(pwd):/dns" ghcr.io/dnscontrol/dnscontrol preview
Getting Started
The quickest way to start is dnscontrol init. The interactive wizard asks for your DNS provider and registrar, verifies your credentials and writes a working creds.json and dnsconfig.js, including the records that already exist in your zones.
See the Getting Started page on the documentation site for the full walkthrough.
Want full "GitOps" control of your DNS data? Clone the dns-config starter repo to get started!
Supported Providers
DNSControl supports 74 DNS providers and registrars:
¹also supports registrar functions ²registrar only