PowerDNS.dnsdist

Rôle Ansible : dnsdist

Statut de construction Licence Rôle Ansible Tag GitHub

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

À propos du projet

Dnsdist is a highly scriptable and DDoS aware DNS loadbalancer

Installer
ansible-galaxy install PowerDNS.dnsdist
Licence
mit
Téléchargements
22.7k
Propriétaire