powerdns: Introduce PowerDNS software release
[slapos.git] / software / powerdns / template / pdns.conf.jinja2
1 # -------------------------------------------------------------------------
2
3 # Configure ip/port binding
4 local-address={{ pdns.get('local-ipv4') }}
5 local-ipv6={{ pdns.get('ipv6') }}
6 local-port={{ pdns.get('port') }}
7
8
9 socket-dir={{ pdns.get('socket-directory') }}
10
11 # Monitoring
12 webserver=yes
13 webserver-address={{ pdns.get('local-ipv4') }}
14 webserver-port={{ pdns.get('webserver-port') }}
15
16 # These totally disable query+packet caching for all zones.  This is necessary
17 # because otherwise when the exact same question is asked twice in a short
18 # period of time (by default, 10 seconds), the same response will be given
19 # without any backends getting involved.
20 #
21 # This is bad for geobackend because obviously every question can potentially
22 # require a new answer based only on the IP of the user's nameserver.  Now, it
23 # should be noted that if you have other zones in PowerDNS then they will have
24 # their query cache disabled as well.  That's not ideal, so you probably want
25 # to run a separate instance of PowerDNS just for geobackend.  Maybe one day
26 # there will be config options to set per-zone query caching time or something.
27 query-cache-ttl=0
28 cache-ttl=0
29
30 # Log a lot of stuff.  Logging is slow.  We will disable this when we are happy
31 # things are working. :)
32 log-dns-details=yes
33 log-dns-queries=yes
34 log-failed-updates=yes
35 loglevel=4
36
37 # This disables wildcards which is more efficient.  geobackend doesn't use
38 # them, so if none of your backends need them, set this, otherwise comment it
39 # out.
40 # wildcards=no
41
42 # The geobackend
43 launch=geo
44
45 # The zone that your geo-balanced RR is inside of.  The whole zone has to be
46 # delegated to the PowerDNS backend, so you will generally want to make up some
47 # subzone of your main zone.  We chose "geo.blitzed.org".
48 #
49 geo-zone={{ slapparameter_dict.get('zone', 'example.com') }}
50
51 # The only parts of the SOA for "geo.blitzed.org" that apply here are the
52 # master server name and the contact address.
53 geo-soa-values={{ slapparameter_dict.get('soa', 'ns0.example.com,admin@example.com') }}
54
55 # List of NS records of the PowerDNS servers that are authoritative for your
56 # GLB zone.
57 geo-ns-records={{ slapparameter_dict.get('ns-record', 'ns0.example.com,ns1.example.com') }}
58
59 # The TTL of the CNAME records that geobackend will return.  Since the same
60 # resolver will always get the same CNAME (apart from if the director-map
61 # changes) it is safe to return a reasonable TTL, so if you leave this
62 # commented then a sane default will be chosen.
63 #geo-ttl=3600
64
65 # The TTL of the NS records that will be returned.  Leave this commented if you
66 # don't understand.
67 #geo-ns-ttl=86400
68
69 # This is the real guts of the data that drives this backend.  This is a DNS
70 # zone file for RBLDNSD, a nameserver specialised for running large DNS zones
71 # typical of DNSBLs and such.  We choose it for our data because it is easier
72 # to parse than the BIND-format one.
73 #
74 # Anyway, it comes from http://countries.nerd.dk/more.html - there are details
75 # there for how to rsync your own copy.  You'll want to do that regularly,
76 # every couple of days maybe.  We believe the nerd.dk guys take the netblock
77 # info from Regional Internet Registries (RIRs) like RIPE, ARIN, APNIC.  From
78 # that they build a big zonefile of IP/prefixlen -> ISO-country-code mappings.
79 geo-ip-map-zonefile={{  geo.get('ip-map-zonefile') }}
80
81 # And finally this last directive tells the geobackend where to find the map
82 # files that say a) which RR to answer for, and b) what actual resource record
83 # to return for each ISO country code.  The setting here is a comma-separated
84 # list of paths, each of which may either be a single map file or a directory
85 # that will contain map files.  If you are only ever going to serve one RR then
86 # a single file is probably better, but if you're going to serve many then a
87 # directory would probably be better.  The rest of this documentation will
88 # assume you chose a directory.
89 geo-maps={{  geo.get('geo-maps') }}
90
91 # -------------------------------------------------------------------------