PowerDNS.dnsdist
Rôle Ansible : dnsdist
Un rôle Ansible créé par l'équipe de PowerDNS pour configurer dnsdist.
Exigences
Une installation d'Ansible 2.9 ou supérieure.
Dépendances
Aucune.
Variables du Rôle
Les variables disponibles sont listées ci-dessous, avec leurs valeurs par défaut (voir defaults/main.yml
):
dnsdist_install_repo: ""
Par défaut, dnsdist est installé depuis les dépôts logiciels configurés sur les hôtes cibles.
# Installer dnsdist depuis la branche principale
- hosts: dnsdist
roles:
- { role: PowerDNS.dnsdist,
dnsdist_install_repo: "{{ dnsdist_powerdns_repo_master }}"
# Installer dnsdist 1.3.x
- hosts: dnsdist
roles:
- { role: PowerDNS.dnsdist,
dnsdist_install_repo: "{{ dnsdist_powerdns_repo_13 }}"
Les exemples ci-dessus montrent comment installer dnsdist depuis les dépôts officiels de PowerDNS
(voir la liste complète des dépôts pré-définis dans vars/main.yml
).
- hosts: all
vars:
dnsdist_install_repo:
name: "dnsdist" # le nom du dépôt
apt_repo_origin: "example.com" # utilisé pour fixer dnsdist au dépôt fourni
apt_repo: "deb http://example.com/{{ ansible_distribution | lower }} {{ ansible_distribution_release | lower }}/dnsdist main"
gpg_key: "http://example.com/MYREPOGPGPUBKEY.asc" # clé publique GPG du dépôt
gpg_key_id: "MYREPOGPGPUBKEYID" # pour éviter de réimporter la clé à chaque exécution du rôle
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 }
Il est également possible d'installer dnsdist à partir de dépôts personnalisés comme démontré dans l'exemple ci-dessus.
dnsdist_install_epel: True
Par défaut, EPEL est installé pour satisfaire certaines dépendances de dnsdist comme lidsodium
.
Pour éviter l'installation d'EPEL, définissez la variable dnsdist_install_epel
sur False
.
dnsdist_package_name: "{{ default_dnsdist_package_name }}"
Le nom du paquet dnsdist : "dnsdist" sur les distributions dérivées de RHEL et Debian.
dnsdist_package_version: ""
Optionnellement, permet de définir une version spécifique du paquet dnsdist à installer.
dnsdist_install_debug_symbols_package: False
Installer le paquet de symboles de débogage dnsdist.
dnsdist_debug_symbols_package_name: "{{ default_dnsdist_debug_symbols_package_name }}"
Le nom du paquet de symboles de débogage dnsdist à installer lorsque dnsdist_install_debug_symbols_package
est True
.
dnsdist_acls: []
Configure les ACLS (masques de réseau) de dnsdist.
dnsdist_locals: ['127.0.0.1:5300']
Configure les adresses d'écoute de dnsdist.
dnsdist_servers:
- '127.0.0.1'
- "{ address='127.0.0.1:5300', source='127.0.0.1@lo', order=1 }"
La liste des adresses IP des serveurs DNS en aval vers lesquels dnsdist doit envoyer le trafic OU de tables Lua que la fonction newServer ( https://dnsdist.org/reference/config.html#newServer ) peut interpréter.
dnsdist_carbonserver: ""
L'adresse IP du serveur Carbon qui doit recevoir les métriques de dnsdist.
dnsdist_controlsocket: "127.0.0.1"
L'adresse IP d'écoute du socket de contrôle TCP de dnsdist.
dnsdist_setkey: ""
Clé de cryptage pour le socket de contrôle TCP de dnsdist. Si elle est vide, une clé aléatoire sera générée. Si une clé est déjà présente dans le fichier, elle sera conservée.
dnsdist_webserver_address: ""
L'adresse IP d'écoute du serveur web intégré, vide donc désactivée par défaut.
dnsdist_webserver_password: ""
Les informations d'authentification pour le serveur web intégré. Doivent être définies lorsque dnsdist_webserver_address
est défini.
dnsdist_webserver_apikey: ""
Les informations d'authentification pour l'API intégrée.
dnsdist_webserver_acl: ""
Depuis la version 1.5.0, seules les connexions provenant de 127.0.0.1 et ::1 sont autorisées par défaut. Voir https://dnsdist.org/guides/webserver.html pour plus d'informations.
dnsdist_config: ""
Configuration dnsdist supplémentaire à insérer telle quelle dans le fichier dnsdist.conf
.
dnsdist_config_owner: 'root'
dnsdist_config_group: 'root'
Utilisateur et groupe qui possèdent le fichier dnsdist.conf
.
dnsdist_service_overrides: {}
Dictionnaire avec des remplacements pour le service (seulement systemd).
Cela peut être utilisé pour modifier n'importe quel paramètre systemd dans la catégorie [Service]
.
dnsdist_unit_overrides: {}
Dictionnaire avec des remplacements pour l'unité de service (seulement systemd).
Cela peut être utilisé pour modifier n'importe quel paramètre systemd dans la catégorie [Unit]
.
dnsdist_environment_overrides: {}
Dictionnaire avec des remplacements pour les variables d'environnement du service (seulement systemd).
Cela peut être utilisé pour modifier n'importe quelles variables d'environnement dans les paramètres systemd dans la catégorie [Service]
.
dnsdist_service_state: "started"
dnsdist_service_enabled: "yes"
Permet de spécifier l'état désiré du service DNSdist. Par exemple, cela permet d'installer et de configurer DNSdist sans démarrer automatiquement le service.
dnsdist_disable_handlers: False
Désactiver le redémarrage automatique du service lors de modifications de la configuration.
dnsdist_tlslocals: []
Configure les écouteurs DNS sur TLS. Les entrées sont copiées telles quelles, une par une.
dnsdist_force_reinstall: False
Forcer la réinstallation des paquets dnsdist en exécutant une suppression avant les étapes d'installation du paquet. Destiné à être utilisé lorsqu'un retour en arrière de dnsdist doit être effectué.
Exemple de Playbook
Déployer dnsdist devant Quad9 et activer l'interface de surveillance web
- hosts: dnsdist
roles:
- { role: PowerDNS.dnsdist,
dnsdist_servers: ['9.9.9.9'],
dnsdist_webserver_address: "{{ ansible_default_ipv4['address'] }}:8083",
dnsdist_webserver_password: 'geheim' }
Journal des modifications
Un journal détaillé de tous les changements apportés au rôle est disponible ici.
Tests
Les tests sont réalisés par Molecule.
$ pip install tox
Pour tester tous les scénarios, exécuter
$ tox
Pour exécuter une commande molecule personnalisée
$ tox -e ansible29 -- molecule test -s dnsdist-18
Licence
MIT
Dnsdist is a highly scriptable and DDoS aware DNS loadbalancer
ansible-galaxy install PowerDNS.dnsdist