mysql services
diff --git a/README.rst b/README.rst
index 6fb9241..bf907aa 100644
--- a/README.rst
+++ b/README.rst
@@ -3,8 +3,20 @@
PowerDNS
========
+Sample pillar:
+PowerDNS server with MySQL backend
+ powedns:
+ server:
+ enabled: true
+ backend:
+ engine: mysql
+ host: localhost
+ port: 3306
+ name: pdns
+ user: pdn
+ password: password
Read more
=========
\ No newline at end of file
diff --git a/files/pdns.conf b/files/pdns.conf
index 873f38c..3a51884 100644
--- a/files/pdns.conf
+++ b/files/pdns.conf
@@ -1,3 +1,4 @@
+{%- from "pdns/map.jinja" import server with context %}
# Autogenerated configuration file template
#################################
# allow-axfr-ips If enabled, restrict zonetransfers to originate from these
@@ -79,7 +80,7 @@
#################################
# launch Which backends to launch and order to query them in
#
-launch=gmysql
+launch={% if server.backend.engine == 'mysql' %}gmysql{% else %}{{ server.backend.engine }}{% endif %}
#################################
# load-modules Load this module - supply absolute or relative path
@@ -89,7 +90,7 @@
#################################
# local-address Local IP address to which we bind
#
-local-address=0.0.0.0
+local-address={{ server.bind.address }}
#################################
# local-ipv6 Local IP address to which we bind
@@ -99,7 +100,7 @@
#################################
# local-port The port on which we listen
#
-local-port=53
+local-port={{ server.bind.port }}
#################################
# log-dns-details If PDNS should log failed update requests
diff --git a/files/pdns.local.gmysql.conf b/files/pdns.local.gmysql.conf
new file mode 100644
index 0000000..d81f357
--- /dev/null
+++ b/files/pdns.local.gmysql.conf
@@ -0,0 +1,14 @@
+{%- from "pdns/map.jinja" import server with context %}
+# MySQL Configuration
+#
+# Launch gmysql backend
+launch=gmysql
+
+# gmysql parameters
+gmysql-host={{ server.backend.host }}
+gmysql-port={{ server.backend.port }}
+gmysql-dbname={{ server.backend.name }}
+gmysql-user={{ server.backend.user }}
+gmysql-password={{ server.backend.password }}
+gmysql-dnssec=yes
+# gmysql-socket=
diff --git a/map.jinja b/map.jinja
index 79e3b4b..0d74fa6 100644
--- a/map.jinja
+++ b/map.jinja
@@ -2,14 +2,30 @@
{%- set server = salt['grains.filter_by']({
'Debian': {
'pkgs': ['pdns-server'],
+ 'mysql_pkgs': ['pdns-backend-mysql'],
'service': 'pdns',
'config': '/etc/powerdns/pdns.conf',
'local_config': '/etc/powerdns/pdns.d/pdns.local.conf',
+ 'bind': {
+ 'address': '0.0.0.0',
+ 'port': '53'
+ },
+ 'backend': {
+ 'engine': 'mysql',
+ }
},
'RedHat': {
'pkgs': ['pdns-server'],
+ 'mysql_pkgs': ['pdns-backend-mysql'],
'service': 'pdns',
'config': '/etc/powerdns/pdns.conf',
'local_config': '/etc/powerdns/pdns.d/pdns.local.conf',
+ 'bind': {
+ 'address': '0.0.0.0',
+ 'port': '53'
+ },
+ 'backend': {
+ 'engine': 'mysql',
+ }
},
}, merge=salt['pillar.get']('powerdns:server')) %}
diff --git a/server/service.sls b/server/service.sls
index 06e88bc..648991b 100644
--- a/server/service.sls
+++ b/server/service.sls
@@ -15,6 +15,26 @@
- require:
- pkg: powerdns_packages
+{%- if server.backend.engine == 'mysql' %}
+
+powerdns_mysql_packages:
+ pkg.installed:
+ - names: {{ server.mysql_pkgs }}
+
+pdns.local.gmysql.conf:
+ file.managed:
+ - source: salt://powerdns/files/pdns.local.gmysql.conf
+ - template: jinja
+ - user: root
+ - group: root
+ - mode: 600
+ - require:
+ - pkg: powerdns_mysql_packages
+ - watch_in:
+ - service: powerdns_service
+
+{%- endif %}
+
powerdns_service:
service.running:
- enable: true