PowerDNS.dnsdist

Ansible Rolle: dnsdist

Build Status Lizenz Ansible Rolle GitHub Tag

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

Über das Projekt

Dnsdist is a highly scriptable and DDoS aware DNS loadbalancer

Installieren
ansible-galaxy install PowerDNS.dnsdist
Lizenz
mit
Downloads
22.7k
Besitzer