pdns

Ansible Роль: Авторитетный Сервер PowerDNS

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

Роль 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
Лицензия
mit
Загрузки
108410
Владелец