PowerDNS.pdns
Rola Ansible: Serwer Autorytatywny PowerDNS
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
Install and configure the PowerDNS Authoritative DNS Server
ansible-galaxy install PowerDNS.pdns