PowerDNS.pdns

Rola Ansible: Serwer Autorytatywny PowerDNS

Status Budowy Licencja Rola Ansible Tag GitHub

Rola Ansible stworzona przez zespół PowerDNS do konfiguracji Serwera Autorytatywnego PowerDNS.

Wymagania

Instalacja Ansible w wersji 2.12 lub wyższej.

Zależności

Brak.

Zmienne Roli

Dostępne zmienne są wymienione poniżej, wraz z ich wartościami domyślnymi (patrz defaults/main.yml):

pdns_install_repo: ""

Domyślnie Serwer Autorytatywny PowerDNS jest instalowany z repozytoriów oprogramowania skonfigurowanych na docelowych hostach.

# Zainstaluj Serwer Autorytatywny PowerDNS z oficjalnego repozytorium 'master'
- hosts: all
  roles:
    - { role: PowerDNS.pdns,
        pdns_install_repo: "{{ pdns_auth_powerdns_repo_master }}"

# Zainstaluj Serwer Autorytatywny PowerDNS z oficjalnego repozytorium '4.7.x'
- hosts: all
  roles:
    - { role: PowerDNS.pdns,
        pdns_install_repo: "{{ pdns_auth_powerdns_repo_47 }}"
        
# Zainstaluj Serwer Autorytatywny PowerDNS z oficjalnego repozytorium '4.8.x'
- hosts: all
  roles:
    - { role: PowerDNS.pdns,
        pdns_install_repo: "{{ pdns_auth_powerdns_repo_48 }}"
        
# Zainstaluj Serwer Autorytatywny PowerDNS z oficjalnego repozytorium '4.9.x'
- hosts: all
  roles:
    - { role: PowerDNS.pdns,
        pdns_install_repo: "{{ pdns_auth_powerdns_repo_49 }}"

Powyższe przykłady pokazują, jak zainstalować Serwer Autorytatywny PowerDNS z oficjalnych repozytoriów PowerDNS (zobacz pełną listę wstępnie zdefiniowanych repozytoriów w vars/main.yml).

- hosts: all
  vars:
    pdns_install_repo:
      name: "powerdns" # nazwa repozytorium
      apt_repo_origin: "example.com"  # używane do przypisania pakietów PowerDNS do dostarczonego repozytorium
      apt_repo: "deb http://example.com/{{ ansible_distribution | lower }} {{ ansible_distribution_release | lower }}/pdns main"
      gpg_key: "http://example.com/MYREPOGPGPUBKEY.asc" # publiczny klucz GPG repozytorium
      gpg_key_id: "MYREPOGPGPUBKEYID" # aby uniknąć ponownego importu klucza za każdym razem, gdy rola jest wykonywana
      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 }

Można również zainstalować Serwer Autorytatywny PowerDNS z niestandardowych repozytoriów, jak pokazano w powyższym przykładzie. Uwaga: Te repozytoria są ignorowane w Arch Linux

 pdns_install_epel: True

Domyślnie, zainstaluj EPEL, aby zaspokoić niektóre zależności Serwera Autorytatywnego PowerDNS, takie jak protobuf. Aby pominąć instalację EPEL, ustaw pdns_install_epel na False.

pdns_package_name: "{{ default_pdns_package_name }}"

Nazwa pakietu Serwera Autorytatywnego PowerDNS, pdns w systemach podobnych do RedHat i pdns-server w systemach podobnych do Debiana.

pdns_package_version: ""

Opcjonalnie, możliwość ustawienia konkretnej wersji pakietu Serwera Autorytatywnego PowerDNS do zainstalowania.

pdns_install_debug_symbols_package: False

Zainstaluj symbole debugowania Serwera Autorytatywnego PowerDNS.

pdns_debug_symbols_package_name: "{{ default_pdns_debug_symbols_package_name }}"

Nazwa pakietu debugowania Serwera Autorytatywnego PowerDNS, który ma być zainstalowany, gdy pdns_install_debug_symbols_package jest True, pdns-debuginfo w systemach podobnych do RedHat i pdns-server-dbg w systemach podobnych do Debiana.

pdns_user: pdns
pdns_group: pdns

Użytkownik i grupa, w której będzie działał proces Serwera Autorytatywnego PowerDNS.
Uwaga: Ta rola nie tworzy użytkownika ani grupy, zakładamy, że zostały one stworzone przez pakiet lub inne role.

pdns_service_name: "pdns"

Nazwa usługi PowerDNS.

pdns_service_state: "started"
pdns_service_enabled: "yes"

Możliwość określenia pożądanej stanu usługi Serwera Autorytatywnego PowerDNS.

pdns_disable_handlers: False

Wyłącz automatyczne ponowne uruchamianie usługi po zmianach w konfiguracji.

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

Plik konfiguracyjny Serwera Autorytatywnego PowerDNS oraz katalog.

pdns_config: {}

Słownik zawierający konfigurację Serwera Autorytatywnego PowerDNS.
Uwaga: Konfiguracja backendów PowerDNS oraz dyrektywy config-dir, setuid i setgid muszą być skonfigurowane poprzez zmienne roli pdns_user, pdns_group i pdns_backends (patrz templates/pdns.conf.j2). Na przykład:

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

konfiguruje Serwer Autorytatywny PowerDNS do nasłuchiwania przychodzących zapytań DNS na porcie 5300.

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

Słownik z nadpisaniami dla usługi (tylko systemd). Można to wykorzystać do zmiany dowolnych ustawień systemd w kategorii [Service].

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

Słownik deklarujący wszystkie backendy, które chcesz włączyć. Możesz używać wielu backendów tego samego typu, stosując składnię {backend}:{instance_name}. Na przykład:

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'

Domyślnie ta rola uruchamia tylko backend bind z pustym plikiem konfiguracyjnym.

pdns_mysql_databases_credentials: {}

Kredencja administratora dla backendu MySQL używanego do tworzenia baz danych i użytkowników Serwera Autorytatywnego PowerDNS. Na przykład:

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"

Zauważ, że musi to zawierać tylko kredencje dla backendów gmysql podanych w pdns_backends.

pdns_sqlite_databases_locations: []

Lokalizacje baz danych SQLite3, które należy utworzyć, jeśli używasz backendu gsqlite3.

pdns_lmdb_databases_locations: []

Lokalizacje baz danych LMDB, które należy utworzyć, jeśli używasz backendu lmdb.

Lokalizacje schematów baz danych MySQL i SQLite3. Kiedy jest ustawione, ta wartość jest używana, a one nie są wykrywane automatycznie.

pdns_mysql_schema_file: ''

pdns_sqlite3_schema_file: ''

Przykładowe Playbooki

Uruchom jako główny przy użyciu backendu bind (kiedy już masz plik 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'

Zainstaluj najnowszą wersję '41' Serwera Autorytatywnego PowerDNS, włączając backend MySQL. Dostarcza również administracyjne dane logowania MySQL, aby automatycznie utworzyć i zainicjować użytkownika oraz bazę danych Serwera Autorytatywnego 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 }}"

Uwaga: W tym przypadku rola będzie używać dostarczonych w pdns_mysql_databases_credentials danych logowania do automatycznego utworzenia i zainicjowania użytkownika (user, password) i bazy danych (dbname) łącząc się z serwerem MySQL (host, port).

Skonfiguruj Serwer Autorytatywny PowerDNS w trybie 'master', odczytując strefy z dwóch różnych baz danych PostgreSQL:

- 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

Skonfiguruj Serwer Autorytatywny PowerDNS do działania z backendem gsqlite3. Baza danych SQLite zostanie utworzona i zainicjowana przez rolę w lokalizacji określonej przez zmienną 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 }}"

Dziennik zmian

Szczegółowy dziennik zmian we wszystkich zmianach zastosowanych do roli jest dostępny tutaj.

Testowanie

Testy są przeprowadzane przez Molecule.

$ pip install tox

Aby przetestować wszystkie scenariusze, uruchom

$ tox

Aby uruchomić niestandardowe polecenie molekuł

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

Licencja

MIT

O projekcie

Install and configure the PowerDNS Authoritative DNS Server

Zainstaluj
ansible-galaxy install PowerDNS.pdns
Licencja
mit
Pobrania
128.2k
Właściciel