PowerDNS on Rails

The PowerDNS on Rails README is located in doc/README_FOR_APP, other supporting documents are also located in doc/

PowerDNS on Rails is written in Ruby, using the Ruby on Rails framework. All external dependencies have been bundled inside this project to ease the installation and use of the code by system administrators.

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
  • Full audit record of all changes

Overview

PowerDNS on Rails is a split from the BIND DLZ on Rails project.

PowerDNS is a reliable alternative to BIND and sports a flexible, feature rich design and support for various backends, including MySQL and PostgreSQL. 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 first built BIND DLZ on Rails that allowed us to migrate back to BIND using a MySQL 5.0 backend, but after several failed production runs we decided to split the project off to use our existing PowerDNS infrastructure. Using Rails 2 for a interface just makes sense because we can build a rich interface and an REST API in a single go. We have a lot of integration needs, and this was our main driver.

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.

It is however worth noting that this interface excepts the "Generic MySQL and PgSQL backend" to be used, as per http://doc.powerdns.com/generic-...

Database Structure

PowerDNS does not allow you to alter the database schema at all, and you're forced to use at least one set database table. It can however handle additions to the table without problems.

We also add additional table to accomodate users, templates, etc.

Migration to PowerDNS

PowerDNS does provide a suite of migration tools, and they're all covered in the official documentation.

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.

New-ticket Create new ticket

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile »

PowerDNS on Rails is a split from the BIND DLZ on Rails project.

PowerDNS is a reliable alternative to BIND and sports a flexible, feature rich design and support for various backends, including MySQL and PostgreSQL. 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 first built BIND DLZ on Rails that allowed us to migrate back to BIND using a MySQL 5.0 backend, but after several failed production runs we decided to
split the project off to use our existing PowerDNS infrastructure. Using Rails 2 for a interface just makes sense because we can build a rich interface and an REST API in a single go. We have a lot of integration needs, and this was our main driver.

High Priority65% complete

 

Completed 11 of 17 tickets

Pages