== Bind DLZ on Rails The Bind DLZ on Rails README is located in doc/README_FOR_APP, other supporting documents are also located in doc/ Bind DLZ 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 == Overview Bind is the defacto DNS server out there, and the bind-dlz extensions enhances it even further by providing support for database backends. 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. Bind DLZ 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. Nothing we tried seemed convincing, and we opted to go back to Bind using bind-dlz on a MySQL 5.0 backend. 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. == Bind DLZ Information The bind-dlz project can be found at http://bind-dlz.sourceforge.net. The documentation is in-depth on that site, I won't repeat anything here unless its related to this project specifically. == Database Structure The bind-dlz project allows you to use any database structure you want, since you specify the SQL statements in the configuration files. For the DNS records specifically we've opted for a simple two-table approach, `zones` and `records`. The `records` table will be exponentially larger than the the `zones` table, at the very least `zone` * 3 (two NS and one SOA). Splitting the records table is possible, but the case for it isn't string enough at this point. Maybe when we reach a couple of million rows, or someone else does, we can investigate splitting that. == Migration to bind-dlz 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. == Testing Bind DLZ 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 bind-dlz installation.