Ruby PowerDNS API interface

Gem Version Inline docs Documentation

A ruby client for version 0 and 1 of the PowerDNS HTTP API.

Installation

Install like any ruby gem:

gem install pdns_api

Or add the following to your Gemfile:

gem 'pdns_api'

Usage

For any action, an instance of PDNS::Client is required with the proper credentials:

require 'pdns_api'

pdns = PDNS::Client.new(
  host:    'ns0.example.com',
  port:    8081,
  key:     'secret',
  version: 1
)

port and version are optional and default to 8081 and 1 respectively.

From here a list of servers can be requested with:

servers = pdns.servers

Or a zone can be requested from the localhost server:

zone = pdns.servers('localhost').zone('example.com')

Example

This example connect to a server, creates a zone (example.com), and adds two records.

require 'pdns_api'

pdns = PDNS::Client.new(
  host:    'ns0.example.com',
  key:     'secret',
  version: 1
)

zone = pdns.server('localhost').zone('example.com.')
zone.create(
  name: zone.id,
  kind: 'Native',
  dnssec: true,
  nameservers: %w( ns0.example.com. ns1.example.com. )
)
zone.update({
              name: 'www.example.com.',
              type: 'AAAA',
              ttl:  86400,
              records: '2001:db8::1'
            }, {
              name: 'mail.example.com.',
              type: 'AAAA',
              ttl:  2880,
              records: %w( 2001:db8::1 2001:db8:cff::1 )
            })