PowerDNS.pdns
Ansible Rolle: PowerDNS Autoritativer Server
Eine Ansible Rolle, die von den Entwicklern hinter PowerDNS erstellt wurde, um den PowerDNS Autoritativen Server einzurichten.
Anforderungen
Eine Ansible Installation in Version 2.12 oder höher.
Abhängigkeiten
Keine.
Rollenvariablen
Verfügbare Variablen sind unten aufgeführt, zusammen mit ihren Standardwerten (siehe defaults/main.yml
):
pdns_install_repo: ""
Standardmäßig wird der PowerDNS Autoritative Server aus den auf den Zielhosts konfigurierten Software-Repositories installiert.
# Installiere den PowerDNS Autoritativen Server aus dem 'master' offiziellen Repository
- hosts: all
roles:
- { role: PowerDNS.pdns,
pdns_install_repo: "{{ pdns_auth_powerdns_repo_master }}"
# Installiere den PowerDNS Autoritativen Server aus dem '4.7.x' offiziellen Repository
- hosts: all
roles:
- { role: PowerDNS.pdns,
pdns_install_repo: "{{ pdns_auth_powerdns_repo_47 }}"
# Installiere den PowerDNS Autoritativen Server aus dem '4.8.x' offiziellen Repository
- hosts: all
roles:
- { role: PowerDNS.pdns,
pdns_install_repo: "{{ pdns_auth_powerdns_repo_48 }}"
# Installiere den PowerDNS Autoritativen Server aus dem '4.9.x' offiziellen Repository
- hosts: all
roles:
- { role: PowerDNS.pdns,
pdns_install_repo: "{{ pdns_auth_powerdns_repo_49 }}"
Die obigen Beispiele zeigen, wie man den PowerDNS Autoritativen Server aus den offiziellen PowerDNS-Repositories installiert
(siehe die vollständige Liste der vordefinierten Repos in vars/main.yml
).
- hosts: all
vars:
pdns_install_repo:
name: "powerdns" # der Name des Repositories
apt_repo_origin: "example.com" # um die PowerDNS-Pakete an das angegebene Repository zu binden
apt_repo: "deb http://example.com/{{ ansible_distribution | lower }} {{ ansible_distribution_release | lower }}/pdns main"
gpg_key: "http://example.com/MYREPOGPGPUBKEY.asc" # öffentliche GPG-Schlüssel des Repositories
gpg_key_id: "MYREPOGPGPUBKEYID" # um zu vermeiden, dass der Schlüssel bei jedem Ausführen der Rolle neu importiert wird
yum_repo_baseurl: "http://example.com/centos/$basearch/$releasever/pdns"
yum_debug_symbols_repo_baseurl: "http://example.com/centos/$basearch/$releasever/pdns/debug"
roles:
- { role: PowerDNS.pdns }
Es ist auch möglich, den PowerDNS Autoritativen Server aus benutzerdefinierten Repositories zu installieren, wie im obigen Beispiel gezeigt. Hinweis: Diese Repositories werden unter Arch Linux ignoriert.
pdns_install_epel: True
Standardmäßig wird EPEL installiert, um einige Abhängigkeiten des PowerDNS Autoritativen Servers wie protobuf
zu erfüllen.
Um die Installation von EPEL zu überspringen, setzen Sie pdns_install_epel
auf False
.
pdns_package_name: "{{ default_pdns_package_name }}"
Der Name des PowerDNS Autoritativen Server Pakets, pdns
auf RedHat-ähnlichen Systemen und pdns-server
auf Debian-ähnlichen Systemen.
pdns_package_version: ""
Optional können Sie eine spezifische Version des PowerDNS Autoritativen Server Pakets festlegen, die installiert werden soll.
pdns_install_debug_symbols_package: False
Installieren Sie die Debug-Symbole des PowerDNS Autoritativen Servers.
pdns_debug_symbols_package_name: "{{ default_pdns_debug_symbols_package_name }}"
Der Name des Debug-Pakets des PowerDNS Autoritativen Servers, das installiert wird, wenn pdns_install_debug_symbols_package
auf True
gesetzt ist,
pdns-debuginfo
auf RedHat-ähnlichen Systemen und pdns-server-dbg
auf Debian-ähnlichen Systemen.
pdns_user: pdns
pdns_group: pdns
Der Benutzer und die Gruppe, unter denen der PowerDNS Autoritative Server-Prozess läuft.
HINWEIS: Diese Rolle erstellt den Benutzer oder die Gruppe nicht, da davon ausgegangen wird, dass sie bereits durch das Paket oder andere Rollen erstellt wurden.
pdns_service_name: "pdns"
Name des PowerDNS-Dienstes.
pdns_service_state: "started"
pdns_service_enabled: "yes"
Erlaubt die Angabe des gewünschten Zustands des PowerDNS Autoritativen Server-Dienstes.
pdns_disable_handlers: False
Deaktivieren Sie den automatischen Neustart des Dienstes bei Änderungen der Konfiguration.
pdns_config_dir: "{{ default_pdns_config_dir }}"
pdns_config_file: "pdns.conf"
Konfigurationsdatei und -verzeichnis des PowerDNS Autoritativen Servers.
pdns_config: {}
Wörterbuch mit der Konfiguration des PowerDNS Autoritativen Servers.
HINWEIS: Die Konfiguration der PowerDNS-Backends sowie die Direktiven config-dir
, setuid
und setgid
müssen über die Rollenvariablen pdns_user
, pdns_group
und pdns_backends
konfiguriert werden (siehe templates/pdns.conf.j2
).
Zum Beispiel:
pdns_config:
master: yes
slave: no
local-address: '192.0.2.53'
local-ipv6: '2001:DB8:1::53'
local-port: '5300'
konfiguriert den PowerDNS Autoritativen Server so, dass er eingehende DNS-Anfragen an Port 5300 abhört.
pdns_service_overrides:
User: {{ pdns_user }}
Group: {{ pdns_group }}
Wörterbuch mit Überschreibungen für den Dienst (nur systemd).
Dies kann verwendet werden, um beliebige systemd-Einstellungen in der Kategorie [Service]
zu ändern.
pdns_backends:
bind:
config: '/dev/null'
Wörterbuch mit allen Backends, die Sie aktivieren möchten. Sie können mehrere Backends desselben Typs verwenden, indem Sie die Syntax {backend}:{instance_name}
verwenden.
Zum Beispiel:
pdns_backends:
'gmysql:one':
'user': root
'host': 127.0.0.1
'password': root
'dbname': pdns
'gmysql:two':
'user': pdns_user
'host': 192.0.2.15
'password': my_password
'dbname': dns
'bind':
'config': '/etc/named/named.conf'
'hybrid': yes
'dnssec-db': '{{ pdns_config_dir }}/dnssec.db'
Standardmäßig startet diese Rolle nur das bind-Backend mit einer leeren Konfigurationsdatei.
pdns_mysql_databases_credentials: {}
Administrativer Zugang für das MySQL-Backend, um die Datenbanken und Benutzer des PowerDNS Autoritativen Servers zu erstellen. Zum Beispiel:
pdns_mysql_databases_credentials:
'gmysql:one':
'priv_user': root
'priv_password': my_first_password
'priv_host':
- "localhost"
- "%"
'gmysql:two':
'priv_user': someprivuser
'priv_password': my_second_password
'priv_host':
- "localhost"
Beachten Sie, dass dies nur die Zugangsdaten für die in pdns_backends
angegebenen gmysql
Backends enthalten sollte.
pdns_sqlite_databases_locations: []
Standorte der SQLite3-Datenbanken, die erstellt werden müssen, wenn das gsqlite3
Backend verwendet wird.
pdns_lmdb_databases_locations: []
Standorte der LMDB-Datenbanken, die erstellt werden müssen, wenn das lmdb
Backend verwendet wird.
Standorte des MySQL- und SQLite3-Datenbankschemas. Wenn gesetzt, wird dieser Wert verwendet und sie werden nicht automatisch erkannt.
pdns_mysql_schema_file: ''
pdns_sqlite3_schema_file: ''
Beispiel-Playbooks
Laufen Sie als Master unter Verwendung des Bind-Backends (wenn Sie bereits eine named.conf
Datei haben):
- hosts: ns1.example.net
roles:
- { role: PowerDNS.pdns }
vars:
pdns_config:
master: true
local-address: '192.0.2.53'
pdns_backends:
bind:
config: '/etc/named/named.conf'
Installieren Sie die neueste '41' Version des PowerDNS Autoritativen Servers, während Sie das MySQL-Backend aktivieren. Stellt auch die administrativen Zugangsdaten für MySQL zur Verfügung, um automatisch den Benutzer und die Datenbank des PowerDNS Autoritativen Servers zu erstellen und zu initialisieren:
- hosts: ns2.example.net
roles:
- { role: PowerDNS.pdns }
vars:
pdns_config:
master: true
slave: false
local-address: '192.0.2.77'
pdns_backends:
gmysql:
host: 192.0.2.120
port: 3306
user: powerdns
password: P0w3rDn5
dbname: pdns
pdns_mysql_databases_credentials:
gmysql:
priv_user: root
priv_password: myrootpass
priv_host:
- "%"
pdns_install_repo: "{{ pdns_auth_powerdns_repo_41 }}"
HINWEIS: In diesem Fall verwendet die Rolle die in pdns_mysql_databases_credentials
angegebenen Zugangsdaten, um den Benutzer (user
, password
) und die Datenbank (dbname
) automatisch zu erstellen und zu initialisieren, indem sie sich mit dem MySQL-Server (host
, port
) verbindet.
Konfigurieren Sie den PowerDNS Autoritativen Server im 'Master'-Modus, während Sie Zonen aus zwei verschiedenen PostgreSQL-Datenbanken lesen:
- hosts: ns2.example.net
roles:
- { role: PowerDNS.pdns }
vars:
pdns_config:
master: true
local-port: 5300
local-address: '192.0.2.111'
pdns_backends:
'gpgsql:serverone':
host: 192.0.2.124
user: powerdns
password: P0w3rDn5
dbname: pdns2
'gpgsql:otherserver':
host: 192.0.2.125
user: root
password: root
dbname: dns
Konfigurieren Sie den PowerDNS Autoritativen Server, um mit dem gsqlite3
Backend zu arbeiten.
Die SQLite-Datenbank wird von der Rolle erstellt und initialisiert an dem Ort, der durch die Variable database_name
angegeben ist.
- hosts: ns4.example.net
roles:
- { role: PowerDNS.pdns }
vars:
database_name: '/var/lib/powerdns/db.sqlite'
pdns_config:
master: true
slave: false
local-address: '192.0.2.73'
pdns_backends:
gsqlite3:
database: "{{ database_name }}"
dnssec: yes
pdns_sqlite_databases_locations:
- "{{ database_name }}"
Änderungsprotokoll
Ein detailliertes Änderungsprotokoll aller Änderungen, die an der Rolle vorgenommen wurden, ist hier verfügbar.
Tests
Tests werden von Molecule durchgeführt.
$ pip install tox
Um alle Szenarien zu testen, führen Sie aus
$ tox
Um einen benutzerdefinierten Molecule-Befehl auszuführen
$ tox -e ansible214 -- molecule test -s pdns-49
Lizenz
MIT
Install and configure the PowerDNS Authoritative DNS Server
ansible-galaxy install PowerDNS.pdns