PowerDNS.dnsdist
Rola Ansible: dnsdist
Rola Ansible stworzona przez zespół PowerDNS do skonfigurowania dnsdist.
Wymagania
Instalacja Ansible w wersji 2.9 lub wyższej.
Zależności
Brak.
Zmienne roli
Dostępne zmienne są wymienione poniżej wraz z wartościami domyślnymi (patrz defaults/main.yml
):
dnsdist_install_repo: ""
Domyślnie, dnsdist jest instalowany z repozytoriów oprogramowania skonfigurowanych na docelowych hostach.
# Instalacja dnsdist z gałęzi master
- hosts: dnsdist
roles:
- { role: PowerDNS.dnsdist,
dnsdist_install_repo: "{{ dnsdist_powerdns_repo_master }}"
# Instalacja dnsdist 1.3.x
- hosts: dnsdist
roles:
- { role: PowerDNS.dnsdist,
dnsdist_install_repo: "{{ dnsdist_powerdns_repo_13 }}"
Powyższe przykłady pokazują, jak zainstalować DNSdist z oficjalnych repositoriów PowerDNS
(zobacz pełną listę zdefiniowanych repozytoriów w vars/main.yml
).
- hosts: all
vars:
dnsdist_install_repo:
name: "dnsdist" # nazwa repozytorium
apt_repo_origin: "example.com" # używane do przypinania dnsdist do podanego repozytorium
apt_repo: "deb http://example.com/{{ ansible_distribution | lower }} {{ ansible_distribution_release | lower }}/dnsdist main"
gpg_key: "http://example.com/MYREPOGPGPUBKEY.asc" # publiczny klucz GPG repozytorium
gpg_key_id: "MYREPOGPGPUBKEYID" # aby uniknąć ponownego importowania klucza przy każdym uruchomieniu roli
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 }
Można również zainstalować dnsdist z własnych repozytoriów, jak pokazano w powyższym przykładzie.
dnsdist_install_epel: True
Domyślnie, zainstaluj EPEL, aby zaspokoić niektóre zależności DNSdist, takie jak lidsodium
.
Aby pominąć instalację EPEL, ustaw zmienną dnsdist_install_epel
na False
.
dnsdist_package_name: "{{ default_dnsdist_package_name }}"
Nazwa pakietu dnsdist: "dnsdist" w zarówno dystrybucjach RHEL, jak i Debian.
dnsdist_package_version: ""
Opcjonalnie, pozwala na ustawienie konkretnej wersji pakietu dnsdist do zainstalowania.
dnsdist_install_debug_symbols_package: False
Instaluj pakiet symboli debugowania dnsdist.
dnsdist_debug_symbols_package_name: "{{ default_dnsdist_debug_symbols_package_name }}"
Nazwa pakietu symboli debugowania dnsdist do zainstalowania, gdy dnsdist_install_debug_symbols_package
jest ustawione na True
.
dnsdist_acls: []
Konfiguruje ACLS dnsdist (maski sieciowe).
dnsdist_locals: ['127.0.0.1:5300']
Konfiguruje adresy wsłuchujące dnsdist.
dnsdist_servers:
- '127.0.0.1'
- "{ address='127.0.0.1:5300', source='127.0.0.1@lo', order=1 }"
Lista adresów IP serwerów DNS, do których dnsdist powinien wysyłać ruch, lub tabel Lua, które funkcja newServer (https://dnsdist.org/reference/config.html#newServer) może przetwarzać.
dnsdist_carbonserver: ""
Adres IP serwera Carbon, który powinien odbierać metryki dnsdist.
dnsdist_controlsocket: "127.0.0.1"
Adres IP, na którym nasłuchuje kontrolny gniazdo TCP dnsdist.
dnsdist_setkey: ""
Klucz szyfrowania dla kontrolnego gniazda TCP dnsdist. Jeśli jest pusty, zostanie wygenerowany losowy klucz. Jeśli klucz już istnieje w pliku, zostanie zachowany.
dnsdist_webserver_address: ""
Adres IP, na którym nasłuchuje wbudowany serwer WWW, pusty w celu wyłączenia domyślnie.
dnsdist_webserver_password: ""
Dane uwierzytelniające do wbudowanego serwera WWW. Muszą być ustawione, gdy dnsdist_webserver_address
jest ustawione.
dnsdist_webserver_apikey: ""
Dane uwierzytelniające do wbudowanego API.
dnsdist_webserver_acl: ""
Od wersji 1.5.0, domyślnie tylko połączenia z 127.0.0.1 i ::1 są dozwolone. Zobacz https://dnsdist.org/guides/webserver.html po więcej informacji.
dnsdist_config: ""
Dodatkowa konfiguracja dnsdist, która ma być umieszczona bez zmian w pliku dnsdist.conf
.
dnsdist_config_owner: 'root'
dnsdist_config_group: 'root'
Użytkownik i grupa, które są właścicielami pliku dnsdist.conf
.
dnsdist_service_overrides: {}
Słownik z nadpisaniami dla usługi (tylko systemd).
Można go użyć do zmiany dowolnych ustawień systemd w kategorii [Service]
.
dnsdist_unit_overrides: {}
Słownik z nadpisaniami dla jednostki usługi (tylko systemd).
Można go użyć do zmiany dowolnych ustawień systemd w kategorii [Unit]
.
dnsdist_environment_overrides: {}
Słownik z nadpisaniami dla środowisk usługi (tylko systemd).
Można go użyć do zmiany dowolnych zmiennych środowiskowych w ustawieniach systemd w kategorii [Service]
.
dnsdist_service_state: "started"
dnsdist_service_enabled: "yes"
Pozwala określić pożądany stan usługi DNSdist. Np. pozwala zainstalować i skonfigurować DNSdist bez automatycznego uruchamiania usługi.
dnsdist_disable_handlers: False
Wyłącz automatyczne ponowne uruchamianie usługi przy zmianach w konfiguracji.
dnsdist_tlslocals: []
Konfiguruje słuchawki DNS over TLS. Wpisy są kopiowane dokładnie jeden po drugim.
dnsdist_force_reinstall: False
Wymusza ponowną instalację pakietów dnsdist, usuwając je przed etapami instalacji. Przeznaczone do użycia, gdy potrzebna jest degradacja dnsdist.
Przykład Playbooka
Zainstaluj dnsdist przed Quad9 i włącz interfejs monitorowania sieci
- hosts: dnsdist
roles:
- { role: PowerDNS.dnsdist,
dnsdist_servers: ['9.9.9.9'],
dnsdist_webserver_address: "{{ ansible_default_ipv4['address'] }}:8083",
dnsdist_webserver_password: 'geheim' }
Dziennik zmian
Szczegółowy dziennik zmian roli jest dostępny tutaj.
Testowanie
Testy są przeprowadzane przez Molecule.
$ pip install tox
Aby przetestować wszystkie scenariusze, uruchom
$ tox
Aby uruchomić niestandardowe polecenie Molecule
$ tox -e ansible29 -- molecule test -s dnsdist-18
Licencja
MIT
Dnsdist is a highly scriptable and DDoS aware DNS loadbalancer
ansible-galaxy install PowerDNS.dnsdist