PowerDNS

Configuration

To use this provider, add an entry to creds.json with TYPE set to POWERDNS along with your API URL, API Key and Server ID. In most cases the Server id is localhost.

Example:

creds.json
{
  "powerdns": {
    "TYPE": "POWERDNS",
    "apiKey": "your-key",
    "apiUrl": "http://localhost",
    "serverName": "localhost"
  }
}

Metadata

Following metadata are available:

dnsconfig.js
{
    'default_ns': [
        'a.example.com.',
        'b.example.com.'
    ],
    'dnssec_on_create': false,
    'zone_kind': 'Native',
}
  • default_ns sets the nameserver which are used

  • dnssec_on_create specifies if DNSSEC should be enabled when creating zones

  • zone_kind is the type that will be used when creating the zone. Can be one of Native, Master or Slave, when not specified it defaults to Native. Please see PowerDNS documentation for explanation of the kinds. Note that these tokens are case-sensitive!

  • soa_edit_api is the default SOA serial method that is used for zone created with the API Can be one of DEFAULT, INCREASE, EPOCH, SOA-EDIT or SOA-EDIT-INCREASE, default format is YYYYMMDD01. Please see PowerDNS SOA-EDIT-DNSUPDATE documentation for explanation of the kinds. Note that these tokens are case-sensitive!

Usage

An example configuration:

dnsconfig.js
var REG_NONE = NewRegistrar("none");
var DSP_POWERDNS = NewDnsProvider("powerdns");

D("example.com", REG_NONE, DnsProvider(DSP_POWERDNS),
    A("test", "1.2.3.4"),
);

Activation

See the PowerDNS documentation how the API can be enabled.

Caveats

SOA Records

The SOA record is supported for use, but behavior is slightly different than expected. If the SOA record is used, PowerDNS will not increase the serial if the SOA record content changes. This itself comes with exceptions as well, if the SOA-EDIT-API is changed to a different value the logic will update the serial to a new value. See this issue for detailed testing of behavior.

The recommended procedure when changing the SOA record contents is to update the SOA record alone. Updates to other records will be done if changes are present, but the serial will not change. The serial will update once a new push is done that does not include an SOA record change.

Last updated