pdns_recursor
Ansible Роль: PowerDNS Recursor
Ansible роль, созданная командой PowerDNS для настройки PowerDNS Recursor.
Требования
Установленная версия Ansible 2.12 или выше.
Зависимости
Нет.
Переменные роли
Доступные переменные перечислены ниже, вместе с значениями по умолчанию (см. defaults/main.yml
):
pdns_rec_install_repo: ""
По умолчанию PowerDNS Recursor устанавливается из программных репозиториев, настроенных на целевых хостах.
# Установить PowerDNS Recursor из официального репозитория 'master'
- hosts: pdns-recursors
roles:
- { role: PowerDNS.pdns_recursor,
pdns_rec_install_repo: "{{ pdns_rec_powerdns_repo_master }}" }
# Установить PowerDNS Recursor из официального репозитория '4.8.x'
- hosts: pdns-recursors
roles:
- { role: PowerDNS.pdns_recursor,
pdns_rec_install_repo: "{{ pdns_rec_powerdns_repo_48 }}" }
# Установить PowerDNS Recursor из официального репозитория '4.9.x'
- hosts: pdns-recursors
roles:
- { role: PowerDNS.pdns_recursor,
pdns_rec_install_repo: "{{ pdns_rec_powerdns_repo_49 }}" }
# Установить PowerDNS Recursor из официального репозитория '5.0.x'
- hosts: pdns-recursors
roles:
- { role: PowerDNS.pdns_recursor,
pdns_rec_install_repo: "{{ pdns_rec_powerdns_repo_50 }}" }
Примеры выше показывают, как установить PowerDNS Recursor из официальных репозиториев PowerDNS (см. полный список предопределенных репозиториев в vars/main.yml
).
Роль также поддерживает собственные репозитории:
- hosts: all
vars:
pdns_rec_install_repo:
name: "powerdns-rec" # название репозитория
apt_repo_origin: "repo.example.com" # используется для закрепления пакетов PowerDNS за предоставленным репозиторием
apt_repo: "deb http://repo.example.com/{{ ansible_distribution | lower }} {{ ansible_distribution_release | lower }}/pdns-recursor main"
gpg_key: "http://repo.example.com/MYREPOGPGPUBKEY.asc" # публичный GPG ключ репозитория
gpg_key_id: "MYREPOGPGPUBKEYID" # чтобы избежать повторного импорта ключа каждый раз при выполнении роли
yum_repo_baseurl: "http://repo.example.com/centos/$basearch/$releasever/pdns-recursor"
yum_repo_debug_symbols_baseurl: "http://repo.example.com/centos/$basearch/$releasever/pdns-recursor/debug"
roles:
- { role: PowerDNS.pdns_recursor }
Также возможно установить PowerDNS Recursor из собственных репозиториев, как показано в примере выше.
pdns_rec_install_epel: True
По умолчанию устанавливается EPEL для удовлетворения некоторых зависимостей PowerDNS Recursor, таких как protobuf
.
Чтобы пропустить установку EPEL, установите pdns_rec_install_epel
в False
.
pdns_rec_package_name: "{{ default_pdns_rec_package_name }}"
Название пакета PowerDNS Recursor, pdns-recursor
на системах типа RedHat и Debian.
pdns_rec_package_version: ""
Опционально, позволяет задать конкретную версию пакета PowerDNS Recursor для установки.
pdns_rec_install_debug_symbols_package: False
Установить отладочные символы PowerDNS Recursor.
pdns_rec_debug_symbols_package_name: "{{ default_pdns_rec_debug_symbols_package_name }}"
Название отладочного пакета PowerDNS Recursor, который будет установлен, если pdns_install_debug_symbols_package
равно True
, pdns-recursor-debuginfo
на системах типа RedHat и pdns-recursor-dbg
на системах типа Debian.
pdns_rec_user: "{{ default_pdns_rec_user }}"
pdns_rec_group: "{{ default_pdns_rec_group }}"
Пользователь и группа, от имени которых будет работать PowerDNS Recursor, pdns-recursor
на системах типа RedHat и pdns
на системах типа Debian.
ПРИМЕЧАНИЕ: Эта роль не создаёт ни пользователей, ни групп, так как мы предполагаем, что они созданы пакетами или другими ролями.
pdns_rec_file_owner: "root"
pdns_rec_file_group: "{{ default_pdns_file_group }}"
Пользователь и группа, владеющие конфигурационными файлами и директориями.
pdns_rec_service_name: "pdns-recursor"
Название службы PowerDNS Recursor.
pdns_rec_service_state: "started"
pdns_rec_service_enabled: "yes"
Позволяет указать желаемое состояние службы PowerDNS Recursor. Например, это позволяет установить и настроить PowerDNS Recursor без автоматического запуска службы.
pdns_rec_disable_handlers: False
Отключить автоматический перезапуск службы при изменении конфигурации.
pdns_rec_config_dir: "{{ default_pdns_rec_config_dir }}"
pdns_rec_config_file: "recursor.conf"
Конфигурационные файлы и директории PowerDNS Recursor, где default_pdns_rec_config_dir
— это /etc/powerdns
на Debian и /etc/pdns-recursor
на RedHat.
pdns_rec_config: { }
Словарь, содержащий в формате YAML кастомную конфигурацию PowerDNS Recursor.
ПРИМЕЧАНИЕ: Не следует указывать config-dir
, set-uid
и set-gid
, так как они задаются другими переменными роли (соответственно pdns_rec_config_dir
, pdns_rec_user
, pdns_rec_group
).
pdns_res_config_lua: "{{ pdns_rec_config_dir }}/config.lua"
pdns_rec_config_lua_file_content: ""
Если pdns_rec_config_lua_file_content
не пуст, это будет записано в файл pdns_res_config_lua
и соответствующим образом определится параметр lua-config-file
в конфигурационном файле recursor.conf
.
pdns_rec_config_dns_script: "{{ pdns_rec_config_dir }}/dns-script.lua"
pdns_rec_config_dns_script_file_content: ""
Если pdns_rec_config_dns_script_file_content
не пуст, это будет записано в файл pdns_rec_config_dns_script
и соответственно определится параметр lua-dns-script
в конфигурационном файле recursor.conf
.
pdns_rec_service_overrides:
User: "{{ pdns_rec_user }}"
Group: "{{ pdns_rec_group }}"
Словарь с переопределениями для службы (только systemd). Это можно использовать для изменения любых параметров systemd в категории [Service]
.
pdns_rec_config_from_files_dir_mode: 0750
pdns_rec_config_from_files: []
#pdns_rec_config_from_files:
# - dest: "/var/lib/pdns-recursor/from-files/forward-zones.txt"
# src: "files/forward-zones/forward.txt"
Список файлов для копирования на экземпляр PowerDNS Recursor, можно использовать для параметров *-from-file
в конфигурационном файле recursor.conf
.
Переменная pdns_rec_config_from_files_dir_mode
позволяет изменить режим владения файлами, если это необходимо.
pdns_rec_config_include_dir_mode: 0750
Переменная pdns_rec_config_include_dir_mode
изменит режим директорий для настроек include-dir
, если одна из них требует прав на запись.
Примеры Playbook
Свяжите с 203.0.113.53
на порту 5300
и разрешите только трафик из подсети 198.51.100.0/24
:
- hosts: pdns-recursors
vars:
pdns_rec_config:
allow-from: "198.51.100.0/24"
local-address: "203.0.113.53:5300"
roles:
- { role: PowerDNS.pdns_recursor }
Разрешите трафик из нескольких сетей и установите некоторые пользовательские ulimits, переопределяющие значения по умолчанию службы systemd:
- hosts: pdns-recursors
vars:
pdns_rec_config:
allow-from:
- "198.51.100.0/24"
- "203.0.113.53/24"
local-address: "203.0.113.53:5300"
pdns_rec_service_overrides:
LimitNOFILE: 10000
roles:
- { role: PowerDNS.pdns_recursor }
Разрешите трафик из нескольких сетей и установите некоторые пользовательские ulimits, переопределяющие значения по умолчанию службы systemd, но сохранив при этом стандартные переопределения из этой роли. Это рекомендуется при использовании PowerDNS 4.3 и выше.
- hosts: pdns-recursors
vars:
pdns_rec_config:
allow-from:
- "198.51.100.0/24"
- "203.0.113.53/24"
local-address: "203.0.113.53:5300"
pdns_rec_service_overrides: '{{ default_pdns_rec_service_overrides | combine({"LimitNOFILE": 10000})'
roles:
- { role: PowerDNS.pdns_recursor }
Перенаправьте запросы для corp.example.net на DNS-сервер на localhost и запросы для foo.example на другие DNS-серверы:
- hosts: pdns-recursors
vars:
pdns_rec_config:
forward-zones:
- "corp.example.net=127.0.0.1:5300"
- "foo.example=192.0.2.3;2001:db8::2:3"
roles:
- { role: PowerDNS.pdns_recursor }
Изменения
Подробный список всех изменений, примененных к роли, доступен здесь.
Тестирование
Тесты выполняются с помощью Molecule.
$ pip install tox
Чтобы протестировать все сценарии, выполните
$ tox
Чтобы выполнить пользовательскую команду molecule
$ tox -e ansible210 -- molecule test -s pdns-rec-49
Лицензия
MIT
ansible-galaxy install PowerDNS/pdns_recursor-ansible