PowerDNS.pdns

Ansible Rolle: PowerDNS Autoritativer Server

Build Status Lizenz Ansible Rolle GitHub Tag

Eine Ansible Rolle, die von den Entwicklern hinter PowerDNS erstellt wurde, um den PowerDNS Autoritativen Server einzurichten.

Anforderungen

Eine Ansible Installation in Version 2.12 oder höher.

Abhängigkeiten

Keine.

Rollenvariablen

Verfügbare Variablen sind unten aufgeführt, zusammen mit ihren Standardwerten (siehe defaults/main.yml):

pdns_install_repo: ""

Standardmäßig wird der PowerDNS Autoritative Server aus den auf den Zielhosts konfigurierten Software-Repositories installiert.

# Installiere den PowerDNS Autoritativen Server aus dem 'master' offiziellen Repository
- hosts: all
  roles:
    - { role: PowerDNS.pdns,
        pdns_install_repo: "{{ pdns_auth_powerdns_repo_master }}"

# Installiere den PowerDNS Autoritativen Server aus dem '4.7.x' offiziellen Repository
- hosts: all
  roles:
    - { role: PowerDNS.pdns,
        pdns_install_repo: "{{ pdns_auth_powerdns_repo_47 }}"
        
# Installiere den PowerDNS Autoritativen Server aus dem '4.8.x' offiziellen Repository
- hosts: all
  roles:
    - { role: PowerDNS.pdns,
        pdns_install_repo: "{{ pdns_auth_powerdns_repo_48 }}"
        
# Installiere den PowerDNS Autoritativen Server aus dem '4.9.x' offiziellen Repository
- hosts: all
  roles:
    - { role: PowerDNS.pdns,
        pdns_install_repo: "{{ pdns_auth_powerdns_repo_49 }}"

Die obigen Beispiele zeigen, wie man den PowerDNS Autoritativen Server aus den offiziellen PowerDNS-Repositories installiert (siehe die vollständige Liste der vordefinierten Repos in vars/main.yml).

- hosts: all
  vars:
    pdns_install_repo:
      name: "powerdns" # der Name des Repositories
      apt_repo_origin: "example.com"  # um die PowerDNS-Pakete an das angegebene Repository zu binden
      apt_repo: "deb http://example.com/{{ ansible_distribution | lower }} {{ ansible_distribution_release | lower }}/pdns main"
      gpg_key: "http://example.com/MYREPOGPGPUBKEY.asc" # öffentliche GPG-Schlüssel des Repositories
      gpg_key_id: "MYREPOGPGPUBKEYID" # um zu vermeiden, dass der Schlüssel bei jedem Ausführen der Rolle neu importiert wird
      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 }

Es ist auch möglich, den PowerDNS Autoritativen Server aus benutzerdefinierten Repositories zu installieren, wie im obigen Beispiel gezeigt. Hinweis: Diese Repositories werden unter Arch Linux ignoriert.

 pdns_install_epel: True

Standardmäßig wird EPEL installiert, um einige Abhängigkeiten des PowerDNS Autoritativen Servers wie protobuf zu erfüllen. Um die Installation von EPEL zu überspringen, setzen Sie pdns_install_epel auf False.

pdns_package_name: "{{ default_pdns_package_name }}"

Der Name des PowerDNS Autoritativen Server Pakets, pdns auf RedHat-ähnlichen Systemen und pdns-server auf Debian-ähnlichen Systemen.

pdns_package_version: ""

Optional können Sie eine spezifische Version des PowerDNS Autoritativen Server Pakets festlegen, die installiert werden soll.

pdns_install_debug_symbols_package: False

Installieren Sie die Debug-Symbole des PowerDNS Autoritativen Servers.

pdns_debug_symbols_package_name: "{{ default_pdns_debug_symbols_package_name }}"

Der Name des Debug-Pakets des PowerDNS Autoritativen Servers, das installiert wird, wenn pdns_install_debug_symbols_package auf True gesetzt ist, pdns-debuginfo auf RedHat-ähnlichen Systemen und pdns-server-dbg auf Debian-ähnlichen Systemen.

pdns_user: pdns
pdns_group: pdns

Der Benutzer und die Gruppe, unter denen der PowerDNS Autoritative Server-Prozess läuft.
HINWEIS: Diese Rolle erstellt den Benutzer oder die Gruppe nicht, da davon ausgegangen wird, dass sie bereits durch das Paket oder andere Rollen erstellt wurden.

pdns_service_name: "pdns"

Name des PowerDNS-Dienstes.

pdns_service_state: "started"
pdns_service_enabled: "yes"

Erlaubt die Angabe des gewünschten Zustands des PowerDNS Autoritativen Server-Dienstes.

pdns_disable_handlers: False

Deaktivieren Sie den automatischen Neustart des Dienstes bei Änderungen der Konfiguration.

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

Konfigurationsdatei und -verzeichnis des PowerDNS Autoritativen Servers.

pdns_config: {}

Wörterbuch mit der Konfiguration des PowerDNS Autoritativen Servers.
HINWEIS: Die Konfiguration der PowerDNS-Backends sowie die Direktiven config-dir, setuid und setgid müssen über die Rollenvariablen pdns_user, pdns_group und pdns_backends konfiguriert werden (siehe templates/pdns.conf.j2). Zum Beispiel:

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

konfiguriert den PowerDNS Autoritativen Server so, dass er eingehende DNS-Anfragen an Port 5300 abhört.

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

Wörterbuch mit Überschreibungen für den Dienst (nur systemd). Dies kann verwendet werden, um beliebige systemd-Einstellungen in der Kategorie [Service] zu ändern.

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

Wörterbuch mit allen Backends, die Sie aktivieren möchten. Sie können mehrere Backends desselben Typs verwenden, indem Sie die Syntax {backend}:{instance_name} verwenden. Zum Beispiel:

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'

Standardmäßig startet diese Rolle nur das bind-Backend mit einer leeren Konfigurationsdatei.

pdns_mysql_databases_credentials: {}

Administrativer Zugang für das MySQL-Backend, um die Datenbanken und Benutzer des PowerDNS Autoritativen Servers zu erstellen. Zum Beispiel:

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"

Beachten Sie, dass dies nur die Zugangsdaten für die in pdns_backends angegebenen gmysql Backends enthalten sollte.

pdns_sqlite_databases_locations: []

Standorte der SQLite3-Datenbanken, die erstellt werden müssen, wenn das gsqlite3 Backend verwendet wird.

pdns_lmdb_databases_locations: []

Standorte der LMDB-Datenbanken, die erstellt werden müssen, wenn das lmdb Backend verwendet wird.

Standorte des MySQL- und SQLite3-Datenbankschemas. Wenn gesetzt, wird dieser Wert verwendet und sie werden nicht automatisch erkannt.

pdns_mysql_schema_file: ''

pdns_sqlite3_schema_file: ''

Beispiel-Playbooks

Laufen Sie als Master unter Verwendung des Bind-Backends (wenn Sie bereits eine named.conf Datei haben):

- 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'

Installieren Sie die neueste '41' Version des PowerDNS Autoritativen Servers, während Sie das MySQL-Backend aktivieren. Stellt auch die administrativen Zugangsdaten für MySQL zur Verfügung, um automatisch den Benutzer und die Datenbank des PowerDNS Autoritativen Servers zu erstellen und zu initialisieren:

- 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 }}"

HINWEIS: In diesem Fall verwendet die Rolle die in pdns_mysql_databases_credentials angegebenen Zugangsdaten, um den Benutzer (user, password) und die Datenbank (dbname) automatisch zu erstellen und zu initialisieren, indem sie sich mit dem MySQL-Server (host, port) verbindet.

Konfigurieren Sie den PowerDNS Autoritativen Server im 'Master'-Modus, während Sie Zonen aus zwei verschiedenen PostgreSQL-Datenbanken lesen:

- 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

Konfigurieren Sie den PowerDNS Autoritativen Server, um mit dem gsqlite3 Backend zu arbeiten. Die SQLite-Datenbank wird von der Rolle erstellt und initialisiert an dem Ort, der durch die Variable database_name angegeben ist.

- 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 }}"

Änderungsprotokoll

Ein detailliertes Änderungsprotokoll aller Änderungen, die an der Rolle vorgenommen wurden, ist hier verfügbar.

Tests

Tests werden von 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 ansible214 -- molecule test -s pdns-49

Lizenz

MIT

Über das Projekt

Install and configure the PowerDNS Authoritative DNS Server

Installieren
ansible-galaxy install PowerDNS.pdns
Lizenz
mit
Downloads
128.2k
Besitzer