PowerDNS.dnsdist
Ansible Rolle: dnsdist
Eine Ansible-Rolle, die von den Entwicklern von PowerDNS erstellt wurde, um dnsdist einzurichten.
Anforderungen
Eine Ansible-Installation in Version 2.9 oder höher.
Abhängigkeiten
Keine.
Rollen-Variablen
Verfügbare Variablen sind unten aufgelistet, zusammen mit den Standardwerten (siehe defaults/main.yml
):
dnsdist_install_repo: ""
Standardmäßig wird dnsdist aus den auf den Ziel-Hosts konfigurierten Software-Repositories installiert.
# Installiere dnsdist aus dem Master-Zweig
- hosts: dnsdist
roles:
- { role: PowerDNS.dnsdist,
dnsdist_install_repo: "{{ dnsdist_powerdns_repo_master }}"
# Installiere dnsdist 1.3.x
- hosts: dnsdist
roles:
- { role: PowerDNS.dnsdist,
dnsdist_install_repo: "{{ dnsdist_powerdns_repo_13 }}"
Die obigen Beispiele zeigen, wie man DNSdist aus den offiziellen PowerDNS-Repositories installiert
(siehe die vollständige Liste der vordefinierten Repos in vars/main.yml
).
- hosts: all
vars:
dnsdist_install_repo:
name: "dnsdist" # der Repository-Name
apt_repo_origin: "example.com" # wird verwendet, um dnsdist im angegebenen Repository zu fixieren
apt_repo: "deb http://example.com/{{ ansible_distribution | lower }} {{ ansible_distribution_release | lower }}/dnsdist main"
gpg_key: "http://example.com/MYREPOGPGPUBKEY.asc" # Repository-öffentlicher GPG-Schlüssel
gpg_key_id: "MYREPOGPGPUBKEYID" # um die erneute Importierung des Schlüssels bei jeder Ausführung der Rolle zu vermeiden
yum_repo_baseurl: "http://example.com/centos/$basearch/$releasever/dnsdist"
yum_debug_symbols_repo_baseurl: "http://example.com/centos/$basearch/$releasever/dnsdist/debug"
roles:
- { role: PowerDNS.dnsdist }
Es ist auch möglich, dnsdist aus benutzerdefinierten Repositories zu installieren, wie im obigen Beispiel gezeigt.
dnsdist_install_epel: True
Standardmäßig wird EPEL installiert, um einige Abhängigkeiten von dnsdist wie lidsodium
zu erfüllen.
Um die Installation von EPEL zu überspringen, setzen Sie die Variable dnsdist_install_epel
auf False
.
dnsdist_package_name: "{{ default_dnsdist_package_name }}"
Der Name des dnsdist-Pakets: "dnsdist" sowohl auf RHEL- als auch auf Debian-basierten Distributionen.
dnsdist_package_version: ""
Optional können Sie eine bestimmte Version des dnsdist-Pakets festlegen, die installiert werden soll.
dnsdist_install_debug_symbols_package: False
Installiere das Paket mit den Debug-Symbolen für dnsdist.
dnsdist_debug_symbols_package_name: "{{ default_dnsdist_debug_symbols_package_name }}"
Der Name des Pakets mit den Debug-Symbolen für dnsdist, das installiert wird, wenn dnsdist_install_debug_symbols_package
auf True
gesetzt ist.
dnsdist_acls: []
Konfiguriert die dnsdist ACLs (Netzmasken).
dnsdist_locals: ['127.0.0.1:5300']
Konfigurieren Sie die Listenadressen von dnsdist.
dnsdist_servers:
- '127.0.0.1'
- "{ address='127.0.0.1:5300', source='127.0.0.1@lo', order=1 }"
Die Liste der IP-Adressen der nachgelagerten DNS-Server, an die dnsdist den Datenverkehr senden soll ODER von Lua-Tabellen, die die Funktion newServer ( https://dnsdist.org/reference/config.html#newServer ) verarbeiten kann.
dnsdist_carbonserver: ""
Die IP-Adresse des Carbon-Servers, der die dnsdist-Metriken empfangen soll.
dnsdist_controlsocket: "127.0.0.1"
Die Listen-IP-Adresse des TCP-Steuerungs-Kanals von dnsdist.
dnsdist_setkey: ""
Verschlüsselungsschlüssel für den TCP-Steuerungs-Kanal von dnsdist. Wenn er leer ist, wird ein zufälliger Schlüssel generiert. Wenn bereits ein Schlüssel in der Datei vorhanden ist, wird er beibehalten.
dnsdist_webserver_address: ""
Die Listen-IP-Adresse des integrierten Webservers, leer, daher standardmäßig deaktiviert.
dnsdist_webserver_password: ""
Die Authentifizierungsdaten für den integrierten Webserver. Muss festgelegt werden, wenn dnsdist_webserver_address
gesetzt ist.
dnsdist_webserver_apikey: ""
Die Authentifizierungsdaten für die integrierte API.
dnsdist_webserver_acl: ""
Seit 1.5.0 sind standardmäßig nur Verbindungen von 127.0.0.1 und ::1 erlaubt. Weitere Informationen finden Sie unter https://dnsdist.org/guides/webserver.html.
dnsdist_config: ""
Zusätzliche dnsdist-Konfiguration, die unverändert in die dnsdist.conf
-Datei eingefügt werden soll.
dnsdist_config_owner: 'root'
dnsdist_config_group: 'root'
Benutzer und Gruppe, die die dnsdist.conf
-Datei besitzen.
dnsdist_service_overrides: {}
Dictionary mit Überschreibungen für den Dienst (nur systemd).
Kann verwendet werden, um beliebige systemd-Einstellungen in der Kategorie [Service]
zu ändern.
dnsdist_unit_overrides: {}
Dictionary mit Überschreibungen für die Diensteinheit (nur systemd).
Kann verwendet werden, um beliebige systemd-Einstellungen in der Kategorie [Unit]
zu ändern.
dnsdist_environment_overrides: {}
Dictionary mit Überschreibungen für die Dienstumgebungen (nur systemd).
Kann verwendet werden, um Umgebungsvariablen in den systemd-Einstellungen in der Kategorie [Service]
zu ändern.
dnsdist_service_state: "started"
dnsdist_service_enabled: "yes"
Erlaubt die Angabe des gewünschten Zustands des DNSdist-Dienstes. Dies ermöglicht es, DNSdist zu installieren und zu konfigurieren, ohne den Dienst automatisch zu starten.
dnsdist_disable_handlers: False
Deaktiviert den automatischen Neustart des Dienstes bei Änderungen der Konfiguration.
dnsdist_tlslocals: []
Konfiguriert die DNS über TLS-Listener. Die Einträge werden unverändert zeilenweise kopiert.
dnsdist_force_reinstall: False
Erzwingt die Neuinstallation der dnsdist-Pakete, indem eine Entfernung vor den Installationsschritten des Pakets durchgeführt wird. Dies ist gedacht für Situationen, in denen ein Downgrade von dnsdist vorgenommen werden muss.
Beispiel-Playbook
Setzen Sie dnsdist vor Quad9 ein und aktivieren Sie die Webüberwachungsoberfläche.
- hosts: dnsdist
roles:
- { role: PowerDNS.dnsdist,
dnsdist_servers: ['9.9.9.9'],
dnsdist_webserver_address: "{{ ansible_default_ipv4['address'] }}:8083",
dnsdist_webserver_password: 'geheim' }
Änderungsprotokoll
Ein detailliertes Änderungsprotokoll aller Änderungen an der Rolle ist hier verfügbar.
Testen
Tests werden mit 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 ansible29 -- molecule test -s dnsdist-18
Lizenz
MIT
Dnsdist is a highly scriptable and DDoS aware DNS loadbalancer
ansible-galaxy install PowerDNS.dnsdist