Skip to content
Snippets Groups Projects
Name Last commit Last update
defaults
handlers
tasks
templates
README.md

PowerDNS

All configuration is to be placed inside the powerdns dict. To only update zonefiles in an existing setup (and skip the setup procedure and everything else) use the "updatedns" tag.

# key:value of config values
config:
	"allow-axfr-ips":
		- ::1
		- 127.0.0.0/8
	"bind-config": /etc/powerdns/backends/bind.conf
	"config-dir": /etc/powerdns
	"daemon": "yes"
	"default-ttl": 3600
	"guardian": "yes"
	"include-dir": "/etc/powerdns/pdns.d"
	"launch":
		bind: {}
	"master": "no"
	"reuseport": "yes"
	"setgid": pdns
	"setuid": pdns
	"slave": "no"
	"soa-minimum-ttl": 300
	"tcp-control-secret": "{{ lookup('password', '/dev/null length=64') }}"
	"version-string": "1"
# name: *zonemeta*, define meta data for zones. See below for definition
zonemeta: {}

# defaults for zone metadata, See **zonemeta** for definition.
zonemeta_defaults: 
	type: native
	"allow-query":
	- any
	"allow-update":
	- none
	"allow-transfer":
	- none
	"slaves":
	- none

# name: **zone**, define all dns zones. See below for definition.
zones: {}

zonemeta

# Can be master/slave/native
# See https://doc.powerdns.com/authoritative/backends/bind.html#master-slave-native-configuration
type: native

"allow-query":
- any
"allow-update":
- none
"allow-transfer":
- none
"slaves":
- none

zone

The basic format is <dns path>: { <record type>: [<value>, <value>] } It is possible to do short hand notations:

  • If there is only a single value for an entry, you can omit the array and use ``: { : }`
  • YAML anchors and merges are recommend for situations where a CNAME is not possible
  • You can use hierachy to shorten paths. If you have foo.example.com and bar.example.com you could write
"example.com.":
	foo:
		A: 1.1.1.1
	bar:
		A: 1.1.1.1

For the SOA record, ##sequence## is replaced by a generated sqeuence number.

Example for a zone:

"example.de":
	SOA: "ns.example.de zonefile.example.de ##sequence## 1d 2h 4w 1h"
	CAA: 0 issue "letsencrypt.org"

	NS:
		- ns0.example.de
		- ns1.example.de

	ns:
		CNAME: ns0.example.de.

	ns0:
		A: 1.1.1.1
		AAAA: ::5

	git:
		A:
			- 2.2.2.2
			- 3.3.3.3
		AAAA: ::6