pdns
Ansible Роль: Авторитетный Сервер PowerDNS
Роль Ansible, созданная командой PowerDNS для настройки Авторитетного Сервера PowerDNS.
Требования
Установка Ansible версии 2.12 или выше.
Зависимости
Нет.
Переменные роли
Доступные переменные перечислены ниже с их значениями по умолчанию (см. defaults/main.yml
):
pdns_install_repo: ""
По умолчанию, Авторитетный Сервер PowerDNS устанавливается из программных репозиториев, настроенных на целевых хостах.
# Установка Авторитетного Сервера PowerDNS из официального репозитория 'master'
- hosts: all
roles:
- { role: PowerDNS.pdns,
pdns_install_repo: "{{ pdns_auth_powerdns_repo_master }}" }
# Установка Авторитетного Сервера PowerDNS из официального репозитория '4.7.x'
- hosts: all
roles:
- { role: PowerDNS.pdns,
pdns_install_repo: "{{ pdns_auth_powerdns_repo_47 }}" }
# Установка Авторитетного Сервера PowerDNS из официального репозитория '4.8.x'
- hosts: all
roles:
- { role: PowerDNS.pdns,
pdns_install_repo: "{{ pdns_auth_powerdns_repo_48 }}" }
# Установка Авторитетного Сервера PowerDNS из официального репозитория '4.9.x'
- hosts: all
roles:
- { role: PowerDNS.pdns,
pdns_install_repo: "{{ pdns_auth_powerdns_repo_49 }}" }
Примеры выше показывают, как установить Авторитетный Сервер PowerDNS из официальных репозиториев PowerDNS (см. полный список предопределенных репозиториев в vars/main.yml
).
- hosts: all
vars:
pdns_install_repo:
name: "powerdns" # имя репозитория
apt_repo_origin: "example.com" # используется для закрепления пакетов PowerDNS за указанным репозиторием
apt_repo: "deb http://example.com/{{ ansible_distribution | lower }} {{ ansible_distribution_release | lower }}/pdns main"
gpg_key: "http://example.com/MYREPOGPGPUBKEY.asc" # публичный GPG ключ репозитория
gpg_key_id: "MYREPOGPGPUBKEYID" # чтобы избежать повторной импорта ключа каждый раз при выполнении роли
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 }
Также возможно установить Авторитетный Сервер PowerDNS из пользовательских репозиториев, как показано в примере выше. Примечание: Эти репозитории игнорируются на Arch Linux.
pdns_install_epel: True
По умолчанию, устанавливается EPEL для удовлетворения некоторых зависимостей Авторитетного Сервера PowerDNS, таких как protobuf
.
Чтобы пропустить установку EPEL, установите pdns_install_epel
в False
.
pdns_package_name: "{{ default_pdns_package_name }}"
Имя пакета Авторитетного Сервера PowerDNS, pdns
в системах на базе RedHat и pdns-server
в системах на базе Debian.
pdns_package_version: ""
По желанию, можно установить конкретную версию пакета Авторитетного Сервера PowerDNS для установки.
pdns_install_debug_symbols_package: False
Установка отладочных символов для Авторитетного Сервера PowerDNS.
pdns_debug_symbols_package_name: "{{ default_pdns_debug_symbols_package_name }}"
Имя отладочного пакета Авторитетного Сервера PowerDNS, который будет установлен, когда pdns_install_debug_symbols_package
равно True
, pdns-debuginfo
в системах на базе RedHat и pdns-server-dbg
в системах на базе Debian.
pdns_user: pdns
pdns_group: pdns
Пользователь и группа, от имени которых будет работать процесс Авторитетного Сервера PowerDNS.
ПРИМЕЧАНИЕ: Эта роль не создает пользователя или группу, так как предполагается, что они были созданы
пакетом или другими ролями.
pdns_service_name: "pdns"
Имя сервиса PowerDNS.
pdns_service_state: "started"
pdns_service_enabled: "yes"
Позволяет указать желаемое состояние сервиса Авторитетного Сервера PowerDNS.
pdns_disable_handlers: False
Отключить автоматический перезапуск сервиса при изменении конфигурации.
pdns_config_dir: "{{ default_pdns_config_dir }}"
pdns_config_file: "pdns.conf"
Файл конфигурации и каталог для Авторитетного Сервера PowerDNS.
pdns_config: {}
Словарь, содержащий конфигурацию Авторитетного Сервера PowerDNS.
ПРИМЕЧАНИЕ: Конфигурация бэкендов PowerDNS и директивы config-dir
, setuid
и setgid
должны быть настроены через переменные роли pdns_user
, pdns_group
и pdns_backends
(см. templates/pdns.conf.j2
).
Например:
pdns_config:
master: yes
slave: no
local-address: '192.0.2.53'
local-ipv6: '2001:DB8:1::53'
local-port: '5300'
настраивает Авторитетный Сервер PowerDNS на прослушивание входящих DNS-запросов на порту 5300.
pdns_service_overrides:
User: {{ pdns_user }}
Group: {{ pdns_group }}
Словарь с переопределениями для сервиса (только systemd).
Это можно использовать для изменения любых настроек systemd в категории [Service]
.
pdns_backends:
bind:
config: '/dev/null'
Словарь, объявляющий все бэкенды, которые вы хотите включить. Вы можете использовать
несколько бэкендов одного типа, используя синтаксис {backend}:{instance_name}
.
Например:
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'
По умолчанию эта роль запускает только бэкенд bind с пустым файлом конфигурации.
pdns_mysql_databases_credentials: {}
Административные учетные данные для бэкенда MySQL, используемые для создания баз данных и пользователей Авторитетного Сервера PowerDNS. Пример:
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"
Обратите внимание, что эти учетные данные должны содержать
только учетные данные для бэкендов gmysql
, указанные в pdns_backends
.
pdns_sqlite_databases_locations: []
Расположения баз данных SQLite3, которые необходимо создать, если используется
бэкенд gsqlite3
.
pdns_lmdb_databases_locations: []
Расположения баз данных LMDB, которые необходимо создать, если используется
бэкенд lmdb
.
Расположения схем баз данных mysql и sqlite3. Когда это значение установлено, оно используется и автоматически не определяется.
pdns_mysql_schema_file: ''
pdns_sqlite3_schema_file: ''
Примеры проигрывателей
Запуск в качестве мастера, используя бэкенд bind (когда у вас уже есть файл 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'
Установить последнюю сборку '41' Авторитетного Сервера PowerDNS, включая бэкенд MySQL. Также предоставляет административные учетные данные MySQL для автоматического создания и инициализации пользователя и базы данных Авторитетного Сервера 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 }}"
ПРИМЕЧАНИЕ: В этом случае роль будет использовать учетные данные, предоставленные в pdns_mysql_databases_credentials
, для автоматического создания и инициализации пользователя (user
, password
) и базы данных (dbname
), подключаясь к серверу MySQL (host
, port
).
Настроить Авторитетный Сервис PowerDNS в режиме 'master', считывая зоны из двух разных баз данных 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
Настроить Авторитетный Сервер PowerDNS для работы с бэкендом gsqlite3
.
База данных SQLite будет создана и инициализирована ролью
в расположении, указанном переменной 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 }}"
Изменения
Подробный список изменений, внесенных в роль, доступен здесь.
Тестирование
Тестирование выполняется с помощью Molecule.
$ pip install tox
Чтобы протестировать все сценарии, выполните
$ tox
Чтобы выполнить пользовательскую команду molecule
$ tox -e ansible214 -- molecule test -s pdns-49
Лицензия
MIT
Install and configure the PowerDNS Authoritative DNS Server
ansible-galaxy install PowerDNS/pdns-ansible