public
Description: Rails frontend for PowerDNS running MySQL or PostgreSQL backends
Homepage: http://kennethkalmer.github.com/powerdns-on-rails/
Clone URL: git://github.com/kennethkalmer/powerdns-on-rails.git
name age message
file .gitignore Sat Sep 26 13:23:51 -0700 2009 .gitignore for rails docs [kennethkalmer]
file CONVENTIONS.textile Sun Jan 04 08:24:06 -0800 2009 More love for the docs [kennethkalmer]
file CREDITS.textile Sun Jan 04 08:24:06 -0800 2009 More love for the docs [kennethkalmer]
file README.textile Tue Feb 17 02:44:48 -0800 2009 Noted support for MASTER,SLAVE,NATIVE domain su... [kennethkalmer]
file Rakefile Fri May 23 06:51:22 -0700 2008 Skeleton Rails 2.0.2 app for bind-dlz-on-rails [Kenneth Kalmer]
file TODO.textile Sun Jan 04 08:24:06 -0800 2009 More love for the docs [kennethkalmer]
directory app/ Sat Sep 26 13:22:23 -0700 2009 JSON search results [kennethkalmer]
directory config/ Tue Sep 22 00:57:04 -0700 2009 Haml 2.2.5 [kennethkalmer]
directory db/ Tue Sep 22 00:55:11 -0700 2009 sql dump updated [kennethkalmer]
directory doc/ Wed Feb 18 11:52:47 -0800 2009 New rake task for generating example auth token... [kennethkalmer]
directory features/ Mon Sep 21 07:17:50 -0700 2009 Renamed factories for features [kennethkalmer]
directory lib/ Mon Sep 21 13:42:36 -0700 2009 fixture-less controller specs [kennethkalmer]
directory log/ Fri May 23 06:51:22 -0700 2008 Skeleton Rails 2.0.2 app for bind-dlz-on-rails [Kenneth Kalmer]
directory public/ Mon May 25 05:22:02 -0700 2009 Updated vendor/rails to solve rack compatibilit... [kennethkalmer]
directory script/ Mon Sep 21 02:44:31 -0700 2009 Updated testing gems [kennethkalmer]
directory spec/ Sat Sep 26 13:22:23 -0700 2009 JSON search results [kennethkalmer]
directory stories/ Sat May 24 00:53:19 -0700 2008 rspec and rspec_on_rails [Kenneth Kalmer]
directory test/ Thu May 14 13:47:36 -0700 2009 Skeleton Rails 2.3 [kennethkalmer]
directory vendor/ Tue Sep 29 17:04:59 -0700 2009 1.9 compat for Rails 2.3.4 [kennethkalmer]
README.textile

PowerDNS on Rails

PowerDNS on Rails is a Ruby on Rails application made to manage PowerDNS installations using the generic MySQL/PostgreSQL backends.

More information:

Quick Installation

  1. $ git clone git://github.com/kennethkalmer/powerdns-on-rails.git
  2. $ cd powerdns-on-rails
  3. Review config/database.yml and modify as needed
  4. $ rake db:migrate
  5. $ rake db:seed
  6. $ ruby script/server
  7. Point your browser to http://localhost:3000
  8. Login with ‘admin’ and ‘secret’

Note on versions: PowerDNS on Rails is version-less, and the master branch will always have stable useable code.

Features (current and planned)

  • RESTful architecture to support rich UI and API access
  • 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
  • Macros for easy bulk updating of domains
  • Support for PowerDNS MASTER, NATIVE & SLAVE record types

Overview

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-mypgsql-backends.html

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 several additional tables to accomodate users, templates, macros and other features.

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.