pdns_recursor

Ansible Роль: PowerDNS Recursor

Статус сборки Лицензия Ansible Роль Тег GitHub

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

О проекте

Install and configure the PowerDNS Recursor

Установить
ansible-galaxy install PowerDNS/pdns_recursor-ansible
Лицензия
mit
Загрузки
113240
Владелец