blob: 0391ac3e0e0b1b1682aaf18d8545cfdfc847f70e [file] [log] [blame]
{%- from "powerdns/map.jinja" import server with context %}
{%- from "powerdns/server/packages.jinja" import packages with context %}
include:
- powerdns.server.service
{%- if server.backend.get('use_socket', False) == True %}
{%- set mysql_connection_args = {
'use_socket': True,
'connection_charset': server.backend.get('dbcharset', 'utf8'),
'connection_db': server.backend.dbname,
'connection_default_file': server.backend.get('dbdefault_file', ''),
'connection_unix_socket': server.backend.socket,
'connection_user': server.backend.user,
'connection_pass': server.backend.password,
} %}
{%- else %}
{%- set mysql_connection_args = {
'use_socket': False,
'connection_charset': server.backend.get('dbcharset', 'utf8'),
'connection_db': server.backend.dbname,
'connection_default_file': server.backend.get('dbdefault_file', ''),
'connection_host': server.backend.host,
'connection_port': server.backend.port,
'connection_user': server.backend.user,
'connection_pass': server.backend.password,
} %}
{%- endif %}
powerdns_mysql_packages:
pkg.installed:
- names: {{ packages.backends.mysql }}
/etc/powerdns/dbtemplate.sql:
file.managed:
- source: salt://powerdns/files/mysql.sql
- require:
- pkg: powerdns_mysql_packages
{%- set powerdns_db_tables = False %}
{%- if grains.get('noservices') is not defined %}
{%- set powerdns_db_tables = salt['mysql.db_tables'](server.backend.dbname, **mysql_connection_args) %}
{%- endif %}
{%- if not powerdns_db_tables %}
powerdns_init_mysql_db:
mysql_query.run_file:
- database: {{ server.backend.dbname }}
- query_file: /etc/powerdns/dbtemplate.sql
- connection_charset: {{ mysql_connection_args.connection_charset }}
{%- if grains.get('noservices') %}
- onlyif: /bin/false
{%- endif %}
{%- if mysql_connection_args.connection_default_file %}
- connection_default_file: {{ mysql_connection_args.connection_default_file }}
{%- endif %}
{%- if mysql_connection_args.use_socket == True %}
- connection_unix_socket: {{ mysql_connection_args.connection_unix_socket }}
{%- else %}
- connection_host: {{ mysql_connection_args.connection_host }}
- connection_port: {{ mysql_connection_args.connection_port }}
{%- endif %}
- connection_user: {{ mysql_connection_args.connection_user }}
- connection_pass: {{ mysql_connection_args.connection_pass }}
- require:
- file: /etc/powerdns/dbtemplate.sql
{%- endif %}
{%- if server.supermasters is defined %}
{% for supermaster in server.supermasters %}
use_supermaster_{{ supermaster.ip }}:
powerdns_mysql.row_present:
- table: supermasters
- where_sql: ip="{{ supermaster.ip }}"
- database: {{ server.backend.dbname }}
- data:
ip: {{ supermaster.ip }}
nameserver: {{ supermaster.nameserver }}
account: {{supermaster.account }}
{%- if server.overwrite_supermasters is defined %}
- update: {{ server.overwrite_supermasters }}
{%- endif %}
{%- if grains.get('noservices') %}
- onlyif: /bin/false
{%- endif %}
- connection_charset: {{ mysql_connection_args.connection_charset }}
{%- if mysql_connection_args.connection_default_file %}
- connection_default_file: {{ mysql_connection_args.connection_default_file }}
{%- endif %}
{%- if mysql_connection_args.use_socket == True %}
- connection_unix_socket: {{ mysql_connection_args.connection_unix_socket }}
{%- else %}
- connection_host: {{ mysql_connection_args.connection_host }}
- connection_port: {{ mysql_connection_args.connection_port }}
{%- endif %}
- connection_user: {{ mysql_connection_args.connection_user }}
- connection_pass: {{ mysql_connection_args.connection_pass }}
{%- if not powerdns_db_tables %}
- require:
- powerdns_init_mysql_db
{%- endif %}
- watch_in:
- service: powerdns_service
{% endfor %}
{%- endif %}
/etc/powerdns/pdns.d/pdns.local.gmysql.conf:
file.managed:
- source: salt://powerdns/files/backends/mysql.conf
- template: jinja
- user: root
- group: root
- mode: 640
- require:
- pkg: powerdns_mysql_packages
- watch_in:
- service: powerdns_service