DNSControl is an infrastructure-as-code tool for managing DNS records across multiple providers through a declarative configuration language.
The tool solves the problem of managing DNS records scattered across different providers by centralizing configuration in a single JavaScript-compatible language. It connects to provider APIs such as AWS Route 53, Cloudflare, and Gandi, allowing you to define all DNS records in one place and synchronize them across multiple providers. The workflow involves writing configuration in a dnsconfig.js file, using the preview command to see what changes would be made, and the push command to apply those changes to your providers.
DNSControl suits teams managing DNS across multiple registrars or DNS hosts who want version control and reproducibility for their DNS infrastructure. It works well for organizations seeking GitOps-style control where DNS configuration lives in a repository. The tool runs on Linux, macOS, and Windows through Docker or native Go binaries, making it accessible across different deployment environments. The provider model is extensible, meaning additional DNS providers can be added beyond the supported set.
The project maintains active development with regular commits addressing bug fixes and feature additions. The codebase shows consistent attention to code quality through pull request reviews and testing. The maintainers respond to issues and incorporate community contributions, indicating ongoing engagement with users. Documentation is actively maintained alongside code changes, keeping guidance current with the tool's capabilities.