PowerDNS on Rails
Source & Issue Tracker
The source code is available at GitHub and the issue tracker is at LightHouse.
History
Split off from the BIND DLZ on Rails project after a miserable production implementation of BIND.
Features (current and planned)
- RESTful architecture to support a rich UI and API’s
- Multi-user support (admins, owners, API clients)
- CLI clients to show integration capabilities
- Conversion and import tools
- Zone/Record Templates
- DNS Insight
Overview
PowerDNS is a fast, flexible and reliable DNS server that supports multiple backends, and in most cases can be used as a drop-in replacement for ISC BIND. PowerDNS on Rails manages the data used by the generic MySQL/PgSQL backend. This simplifies the management of thousands of zones, and provides added redundancy (by way of database replication) and opens the doors for web frontends that ease this even more.
PowerDNS on Rails is built based on our experience of managing thousands of DNS records through various (often crude) techniques, that included building zone files from databases via cron, and implementing PowerDNS for its database backends.
We grew exceedingly tired of using Tupa (another unmaintained frontend) and decided to roll our own. We first ventured down the path of changing our infrastructure over to BIND, which failed miserably for us, and now where sticking to PowerDNS.
This project will always receive more TLC from us, but we plan to port the changes and enhancements over to the BIND DLZ on Rails project as well.
PowerDNS Information
The PowerDNS project can be found at http://www.powerdns.com. The documentation is in-depth on that site, I won’t repeat anything here unless its related to this project specifically.
Database Structure
PowerDNS enforces a strict database structure on us by default, but it can be adapted if needed. We opted to stick with the default, so people with existing PowerDNS installations could just use this project. The database structure is covered on this page.
We had to jump through some interesting hoops to get the needed ActiveRecord convenience from the structure, but it all works (and is well spec’ed).
Migration to PowerDNS
We plan to build various import and conversion tools after the initial release. You are welcome to submit your own converter/importer for inclusion in the project. Also checkout out the PowerDNS documentation on migrating to PowerDNS, they also have a lot of bases covered allready.
Testing
PowerDNS on Rails is built using extensive RSpec suites, often termed “Behaviour Driven Development”. It is critical for a core service like DNS to be reliable and that all changes are correct and won’t impact services offered to clients.
Apart from the extensive programmatic tests, we’ll be implementing tests that actually seed a DNS database and use BIND’s dig utility to query a configured PowerDNS installation.
Thanks
Thanks to ISP in a Box for allowing us to build this project in company time and giving us the required infrastructure, support and human testing during the development, now and in the coming months.