Files
ansible-pull/roles/nameserver/tasks/install_powerdns_server.yml
2024-10-03 23:02:04 +02:00

124 lines
4.1 KiB
YAML

- name: Nameserver | powerdns-server | install packages
package:
name: "{{ powerdns_server_package }}"
state: present
- name: Nameserver | powerdns-server | install backends
package:
name: "{{ item.package }}"
state: latest
with_items: "{{ powerdns_backends }}"
- name: Nameserver | powerdns-server | install and configure database
when:
- powerdns_primary is defined
- powerdns_primary is true
block:
- include_role: name=database # required. The name of the role to be executed.
- name: Nameserver | powerdns-server | install python mysql client
package:
name: "{{ python_mysql_client }}"
state: present
- name: Nameserver | powerdns-server | create database
mysql_db:
name: "{{ pdns_db_name }}"
state: present
encoding: "utf8"
config_file: "/etc/mysql/my.cnf"
login_unix_socket: "{{ pdns_mysql_socket }}"
register: database_exists
- name: Nameserver | powerdns-server | import database
mysql_db:
name: "{{ pdns_db_name }}"
state: import
target: "{{ pdns_mysql_schema }}"
config_file: "/etc/mysql/my.cnf"
login_unix_socket: "{{ pdns_mysql_socket }}"
when: database_exists.changed
- name: Nameserver | powerdns-server | create database user
mysql_user:
name: "{{ pdns_db_user }}"
password: "{{ pdns_db_passwd | default(lookup('password', '/etc/powerdns/pdns.d/.mysqlpw length=20')) }}" # not required. Set the user's password..
host: localhost
priv: "{{ pdns_db_name }}.*:ALL"
append_privs: False
sql_log_bin: True
state: present
update_password: on_create
config_file: "/etc/mysql/my.cnf"
login_unix_socket: "{{ pdns_mysql_socket }}"
- name: Nameserver | powerdns-server | create database users for secondaries
mysql_user:
name: "{{ pdns_db_user }}"
password: "{{ pdns_db_passwd | default(lookup('password', '/etc/powerdns/pdns.d/.mysqlpw length=20')) }}"
host: "{{ item }}"
priv: "{{ pdns_db_name }}.*:SELECT"
append_privs: False
sql_log_bin: True
state: present
update_password: on_create
config_file: "/etc/mysql/my.cnf"
login_unix_socket: "{{ pdns_mysql_socket }}"
loop: "{{ pdns_secondaries }}"
- name: Nameserver | powerdns-server | configure mysql for network
ini_file:
path: "/etc/mysql/mariadb.conf.d/50-server.cnf"
section: "mysqld"
option: "bind-address"
value: "{{ ansible_default_ipv4.address }}"
state: present
no_extra_spaces: False # not required. Do not insert spaces before and after '=' symbol.
notify: restart_mysqld
- name: Nameserver | powerdns-server | copy config
template:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
mode: "0644"
owner: "root"
group: "root"
force: no
loop:
- { src: "powerdns-server-pri-mysql-config.j2", dest: "/etc/powerdns/pdns.d/mysql.conf" }
- { src: "powerdns-server-pri-api-config.j2", dest: "/etc/powerdns/pdns.d/api.conf"}
notify: restart_pdns
- name: Nameserver | powerdns-server | configure backends for secondaries
when:
- powerdns_primary is defined
- powerdns_primary is false
- powerdns_secondary is defined
- powerdns_secondary is true
template:
src: "powerdns-server-pri-mysql-config.j2"
dest: "/etc/powerdns/pdns.d/mysql.conf"
mode: "0644"
owner: "root"
group: "root"
force: no
- name: Nameserver | powerdns-server | disable bind
block:
- name: Nameserver | powerdns-server | get running services
service_facts:
- name: Nameserver | powerdns-server | disable bind
service:
name: "named"
state: stopped
enabled: false
when: "'bind' in service_names"
vars:
service_names: "{{ services|dict2items|map(attribute='value.name')|list }}"
- name: Nameserver | powerdns-server | enable service
service:
name: "pdns"
state: started
enabled: true