MintPress DNS Provider - PowerDNS

This MintPress gem provides a wrapper to create and manage records and zones on a PowerDNS Authoritative Server.

Product Version
PowerDNS 4.1

Required Reading

This will only really make sense if you have read the general Mintpress Infastructure Framework documentation

Using with mintpress infrastructure framework

include MintPress::Infrastructure
# To use with an existing VM build, this is all you need
UsingPowerDNSEntry.new(webserver_host: 'powerdns.test.mintpress.io',
                       webserver_port: 80,
                       api_key: 'changeme')
# To create a custom DNS entry, try this:
PowerDnsEntry.new(type: 'A',
                  name: 'test1.mintpress.io',
                  values: '192.168.1.100',
                  ttl: 300).create
                  
# Maybe a CNAME
PowerDnsEntry.new(type: 'CNAME',
                  name: 'test2.mintpress.io',
                  values: 'test1.mintpress.io',
                  ttl: 300).create

# Maybe a PTR for test1
PowerDnsEntry.new(type: 'PTR',
                  name: '9.0.0.10.in-addr.arpa', 
                  values: 'test1.mintpress.io',
                  ttl: 300).create

# To create a remove DNS entry, try this:
PowerDnsEntry.new(type: 'A',
                  name: 'test1.mintpress.io').remove

or in chef:

power_dns_zone "test.mintpress.io" do
  webserver_host 'powerdns.test.mintpress.io'
  webserver_port 80
  api_key 'changeme'
  kind 'Native'
  namservers 'powerdns.test.mintpress.io'
end
using_power_dns_entry "powerdns" do
  webserver_host 'powerdns.test.mintpress.io'
  webserver_port 80
  api_key 'changeme'
end

power_dns_entry "test1.mintpress.io' do
  type 'A'
  values '192.168.1.100'
  action :create
end

Creating Zones

To manage powerdns zones, we provide the PowerDnsZone resource - it does NOT use teh UsingPowerDnsEntry details, so you do have to specify the host/port/apikey on this:

include MintPress::Infrastructure
zone = PowerDnsZone.new(webserver_host: 'powerdns.test.mintpress.io',
                         webserver_port: 80,
                         api_key: 'changeme',
                         name: 'test.mintpress.io',
                         dnssec: true,
                         kind: 'native',
                         nameservers: '192.168.1.1')
# Create the zone
zone.create
# Clean it up
zone.delete