PowerDNS.pdns

Rôle Ansible : Serveur Autoritatif PowerDNS

État de construction
Licence
Rôle Ansible
Tag GitHub

Un rôle Ansible créé par l'équipe de PowerDNS pour configurer le Serveur Autoritatif PowerDNS.

Exigences

Une installation d'Ansible 2.12 ou supérieure.

Dépendances

Aucune.

Variables de Rôle

Les variables disponibles sont listées ci-dessous, avec leurs valeurs par défaut (voir defaults/main.yml):

pdns_install_repo: ""

Par défaut, le Serveur Autoritatif PowerDNS est installé à partir des dépôts de logiciels configurés sur les hôtes cibles.

# Installer le Serveur Autoritatif PowerDNS à partir du dépôt officiel 'master'
- hosts: all
  roles:
    - { role: PowerDNS.pdns,
        pdns_install_repo: "{{ pdns_auth_powerdns_repo_master }}"

# Installer le Serveur Autoritatif PowerDNS à partir du dépôt officiel '4.7.x'
- hosts: all
  roles:
    - { role: PowerDNS.pdns,
        pdns_install_repo: "{{ pdns_auth_powerdns_repo_47 }}"
        
# Installer le Serveur Autoritatif PowerDNS à partir du dépôt officiel '4.8.x'
- hosts: all
  roles:
    - { role: PowerDNS.pdns,
        pdns_install_repo: "{{ pdns_auth_powerdns_repo_48 }}"
        
# Installer le Serveur Autoritatif PowerDNS à partir du dépôt officiel '4.9.x'
- hosts: all
  roles:
    - { role: PowerDNS.pdns,
        pdns_install_repo: "{{ pdns_auth_powerdns_repo_49 }}"

Les exemples ci-dessus montrent comment installer le Serveur Autoritatif PowerDNS à partir des 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:
    pdns_install_repo:
      name: "powerdns" # le nom du dépôt
      apt_repo_origin: "example.com"  # utilisé pour verrouiller les paquets PowerDNS au dépôt fourni
      apt_repo: "deb http://example.com/{{ ansible_distribution | lower }} {{ ansible_distribution_release | lower }}/pdns 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 fois que le rôle est exécuté
      yum_repo_baseurl: "http://example.com/centos/$basearch/$releasever/pdns"
      yum_debug_symbols_repo_baseurl: "http://example.com/centos/$basearch/$releasever/pdns/debug"
  roles:
    - { role: PowerDNS.pdns }

Il est également possible d'installer le Serveur Autoritatif PowerDNS à partir de dépôts personnalisés comme démontré dans l'exemple ci-dessus.
Remarque : Ces dépôts sont ignorés sur Arch Linux.

 pdns_install_epel: True

Par défaut, installez EPEL pour satisfaire certaines dépendances du Serveur Autoritatif PowerDNS comme protobuf.
Pour sauter l'installation d'EPEL, réglez pdns_install_epel sur False.

pdns_package_name: "{{ default_pdns_package_name }}"

Le nom du paquet du Serveur Autoritatif PowerDNS, pdns sur les systèmes de type RedHat et pdns-server sur les systèmes de type Debian.

pdns_package_version: ""

Optionnellement, permet de définir une version spécifique du paquet du Serveur Autoritatif PowerDNS à installer.

pdns_install_debug_symbols_package: False

Installer les symboles de débogage du Serveur Autoritatif PowerDNS.

pdns_debug_symbols_package_name: "{{ default_pdns_debug_symbols_package_name }}"

Le nom du paquet de débogage du Serveur Autoritatif PowerDNS à installer lorsque pdns_install_debug_symbols_package est True, pdns-debuginfo sur les systèmes de type RedHat et pdns-server-dbg sur les systèmes de type Debian.

pdns_user: pdns
pdns_group: pdns

L'utilisateur et le groupe sous lesquels le processus du Serveur Autoritatif PowerDNS s'exécutera.
REMARQUE : Ce rôle ne crée pas l'utilisateur ou le groupe, car nous supposons qu'ils ont été créés par le paquet ou d'autres rôles.

pdns_service_name: "pdns"

Nom du service PowerDNS.

pdns_service_state: "started"
pdns_service_enabled: "yes"

Permet de spécifier l'état souhaité du service du Serveur Autoritatif PowerDNS.

pdns_disable_handlers: False

Désactiver le redémarrage automatique du service lors de changements de configuration.

pdns_config_dir: "{{ default_pdns_config_dir }}"
pdns_config_file: "pdns.conf"

Fichier et répertoire de configuration du Serveur Autoritatif PowerDNS.

pdns_config: {}

Dictionnaire contenant la configuration du Serveur Autoritatif PowerDNS.
REMARQUE : La configuration des backends PowerDNS et les directives config-dir, setuid et setgid doivent être configurées via les variables de rôle pdns_user, pdns_group et pdns_backends (voir templates/pdns.conf.j2).
Par exemple :

pdns_config:
  master: yes
  slave: no
  local-address: '192.0.2.53'
  local-ipv6: '2001:DB8:1::53'
  local-port: '5300'

configure le Serveur Autoritatif PowerDNS pour écouter les requêtes DNS entrantes sur le port 5300.

pdns_service_overrides:
  User: {{ pdns_user }}
  Group: {{ pdns_group }}

Dictionnaire avec des substitutions pour le service (seulement pour systemd).
Cela peut être utilisé pour modifier n'importe quel paramètre systemd dans la catégorie [Service].

pdns_backends:
  bind:
    config: '/dev/null'

Dictionnaire déclarant tous les backends que vous souhaitez activer. Vous pouvez utiliser plusieurs backends du même type en utilisant la syntaxe {backend}:{instance_name}.
Par exemple :

pdns_backends:
  'gmysql:one':
    'user': root
    'host': 127.0.0.1
    'password': root
    'dbname': pdns
  'gmysql:two':
    'user': pdns_user
    'host': 192.0.2.15
    'password': my_password
    'dbname': dns
  'bind':
    'config': '/etc/named/named.conf'
    'hybrid':  yes
    'dnssec-db': '{{ pdns_config_dir }}/dnssec.db'

Par défaut, ce rôle démarre uniquement le backend bind avec un fichier de configuration vide.

pdns_mysql_databases_credentials: {}

Informations d'identification administratives pour le backend MySQL utilisé pour créer les bases de données et utilisateurs du Serveur Autoritatif PowerDNS.
Par exemple :

pdns_mysql_databases_credentials:
  'gmysql:one':
    'priv_user': root
    'priv_password': my_first_password
    'priv_host':
      - "localhost"
      - "%"
  'gmysql:two':
    'priv_user': someprivuser
    'priv_password': my_second_password
    'priv_host':
      - "localhost"

Remarquez que cela ne doit contenir que les informations d'identification pour les backends gmysql fournis dans pdns_backends.

pdns_sqlite_databases_locations: []

Emplacements des bases de données SQLite3 qui doivent être créées si vous utilisez le backend gsqlite3.

pdns_lmdb_databases_locations: []

Emplacements des bases de données LMDB qui doivent être créées si vous utilisez le backend lmdb.

Emplacements des fichiers de schéma de base de données mysql et sqlite3.
Lorsqu'ils sont définis, cette valeur est utilisée et ils ne sont pas automatiquement détectés.

pdns_mysql_schema_file: ''

pdns_sqlite3_schema_file: ''

Exemples de Playbooks

Exécutez en tant que maître en utilisant le backend bind (si vous avez déjà un fichier named.conf) :

- hosts: ns1.example.net
  roles:
    - { role: PowerDNS.pdns }
  vars:
    pdns_config:
      master: true
      local-address: '192.0.2.53'
    pdns_backends:
      bind:
        config: '/etc/named/named.conf'

Installez la dernière version '41' du Serveur Autoritatif PowerDNS en activant le backend MySQL.
Fournit également les informations d'identification administratives MySQL pour créer et initialiser automatiquement l'utilisateur et la base de données du Serveur Autoritatif PowerDNS :

- hosts: ns2.example.net
  roles:
    - { role: PowerDNS.pdns }
  vars:
    pdns_config:
      master: true
      slave: false
      local-address: '192.0.2.77'
    pdns_backends:
      gmysql:
        host: 192.0.2.120
        port: 3306
        user: powerdns
        password: P0w3rDn5
        dbname: pdns
    pdns_mysql_databases_credentials:
      gmysql:
        priv_user: root
        priv_password: myrootpass
        priv_host:
          - "%"
    pdns_install_repo: "{{ pdns_auth_powerdns_repo_41 }}"

REMARQUE : Dans ce cas, le rôle utilisera les informations d'identification fournies dans pdns_mysql_databases_credentials pour créer et initialiser automatiquement l'utilisateur (user, password) et la base de données (dbname) en se connectant au serveur MySQL (host, port).

Configurez le Serveur Autoritatif PowerDNS en mode 'maître' lisant les zones à partir de deux bases de données PostgreSQL différentes :

- hosts: ns2.example.net
  roles:
    - { role: PowerDNS.pdns }
  vars:
    pdns_config:
      master: true
      local-port: 5300
      local-address: '192.0.2.111'
    pdns_backends:
      'gpgsql:serverone':
        host: 192.0.2.124
        user: powerdns
        password: P0w3rDn5
        dbname: pdns2
      'gpgsql:otherserver':
        host: 192.0.2.125
        user: root
        password: root
        dbname: dns

Configurez le Serveur Autoritatif PowerDNS pour fonctionner avec le backend gsqlite3.
La base de données SQLite sera créée et initialisée par le rôle à l'emplacement spécifié par la variable database_name.

- hosts: ns4.example.net
  roles:
    - { role: PowerDNS.pdns }
  vars:
    database_name: '/var/lib/powerdns/db.sqlite'
    pdns_config:
      master: true
      slave: false
      local-address: '192.0.2.73'
    pdns_backends:
      gsqlite3:
        database: "{{ database_name }}"
        dnssec: yes
    pdns_sqlite_databases_locations:
      - "{{ database_name }}"

Journal des modifications

Un journal détaillé de tous les changements appliqués au rôle est disponible ici.

Tests

Les tests sont effectués par Molecule.

$ pip install tox

Pour tester tous les scénarios, exécutez

$ tox

Pour exécuter une commande Molecule personnalisée

$ tox -e ansible214 -- molecule test -s pdns-49

Licence

MIT

À propos du projet

Install and configure the PowerDNS Authoritative DNS Server

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