dnsdist

Ansible Роль: dnsdist

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

Ansible роль, созданная командой PowerDNS для установки dnsdist.

Требования

Установка Ansible 2.9 или выше.

Зависимости

Нет.

Переменные роли

Доступные переменные перечислены ниже с значениями по умолчанию (см. defaults/main.yml):

dnsdist_install_repo: ""

По умолчанию dnsdist устанавливается из программных репозиториев, настроенных на целевых хостах.

# Установка dnsdist из основной ветки
- hosts: dnsdist
  roles:
  - { role: PowerDNS.dnsdist,
      dnsdist_install_repo: "{{ dnsdist_powerdns_repo_master }}"

# Установка dnsdist 1.3.x
- hosts: dnsdist
  roles:
  - { role: PowerDNS.dnsdist,
      dnsdist_install_repo: "{{ dnsdist_powerdns_repo_13 }}"

В приведенных выше примерах показано, как установить DNSdist из официальных репозиториев PowerDNS (см. полный список предустановленных репозиториев в vars/main.yml).

- hosts: all
  vars:
    dnsdist_install_repo:
      name: "dnsdist" # имя репозитория
      apt_repo_origin: "example.com"  # используется для закрепления dnsdist за предоставленным репозиторием
      apt_repo: "deb http://example.com/{{ ansible_distribution | lower }} {{ ansible_distribution_release | lower }}/dnsdist main"
      gpg_key: "http://example.com/MYREPOGPGPUBKEY.asc" # публичный GPG ключ репозитория
      gpg_key_id: "MYREPOGPGPUBKEYID" # чтобы избежать повторного импорта ключа каждый раз при выполнении роли
      yum_repo_baseurl: "http://example.com/centos/$basearch/$releasever/dnsdist"
      yum_debug_symbols_repo_baseurl: "http://example.com/centos/$basearch/$releasever/dnsdist/debug"
  roles:
  - { role: PowerDNS.dnsdist }

Также возможно установить dnsdist из собственных репозиториев, как показано в примере выше.

dnsdist_install_epel: True

По умолчанию устанавливается EPEL для удовлетворения некоторых зависимостей DNSdist, таких как lidsodium. Чтобы пропустить установку EPEL, установите переменную dnsdist_install_epel в False.

dnsdist_package_name: "{{ default_dnsdist_package_name }}"

Имя пакета dnsdist: "dnsdist" на RHEL и производных дистрибутивах Debian.

dnsdist_package_version: ""

При необходимости позволяет установить конкретную версию пакета dnsdist для установки.

dnsdist_install_debug_symbols_package: False

Установить пакет отладочных символов dnsdist.

dnsdist_debug_symbols_package_name: "{{ default_dnsdist_debug_symbols_package_name }}"

Имя пакета отладочных символов dnsdist, который будет установлен, когда dnsdist_install_debug_symbols_package равно True.

dnsdist_acls: []

Настройка ACLS dnsdist (сетевые маски).

dnsdist_locals: ['127.0.0.1:5300']

Настройка адресов прослушивания dnsdist.

dnsdist_servers:
  - '127.0.0.1'
  - "{ address='127.0.0.1:5300', source='127.0.0.1@lo', order=1 }"

Список IP-адресов серверов DNS, на которые dnsdist должен направлять трафик ИЛИ Lua-таблиц, которые может разобрать функция newServer ( https://dnsdist.org/reference/config.html#newServer ).

dnsdist_carbonserver: ""

IP-адрес Carbon-сервера, который должен получать метрики dnsdist.

dnsdist_controlsocket: "127.0.0.1"

IP-адрес прослушивания TCP-канала управления dnsdist.

dnsdist_setkey: ""

Ключ шифрования для TCP-канала управления dnsdist. Если он пустой, будет сгенерирован случайный ключ. Если ключ уже присутствует в файле, он будет сохранен.

dnsdist_webserver_address: ""

IP-адрес прослушивания встроенного веб-сервера, пустой по умолчанию, что отключает его.

dnsdist_webserver_password: ""

Учетные данные для аутентификации встроенного веб-сервера. Должны быть установлены, когда установлен dnsdist_webserver_address.

dnsdist_webserver_apikey: ""

Учетные данные для аутентификации встроенного API.

dnsdist_webserver_acl: ""

С версии 1.5.0 по умолчанию разрешены только соединения с 127.0.0.1 и ::1. См. https://dnsdist.org/guides/webserver.html для получения дополнительной информации.

dnsdist_config: ""

Дополнительная конфигурация dnsdist, которая будет вставлена в файл dnsdist.conf.

dnsdist_config_owner: 'root'
dnsdist_config_group: 'root'

Пользователь и группа, владеющие файлом dnsdist.conf.

dnsdist_service_overrides: {}

Словарь с переопределениями для службы (только systemd). Это может быть использовано для изменения любых системных настроек в категории [Service].

dnsdist_unit_overrides: {}

Словарь с переопределениями для единицы службы (только systemd). Это может быть использовано для изменения любых системных настроек в категории [Unit].

dnsdist_environment_overrides: {}

Словарь с переопределениями для окружений службы (только systemd). Это может быть использовано для изменения любых переменных окружения в системных настройках в категории [Service].

dnsdist_service_state: "started"
dnsdist_service_enabled: "yes"

Позволяет указать желаемое состояние службы DNSdist. Например, это позволяет установить и настроить DNSdist без автоматического запуска службы.

dnsdist_disable_handlers: False

Отключить автоматическую перезагрузку службы при изменениях конфигурации.

dnsdist_tlslocals: []

Настройка прослушивателей DNS по TLS. Записи копируются вербатим, запись за записью.

dnsdist_force_reinstall: False

Принудительная переустановка пакетов dnsdist путем выполнения удаления перед шагами установки пакета. Предназначено для случаев, когда необходимо выполнить понижение версии dnsdist.

Пример плейбука

Развертывание dnsdist перед Quad9 и включение веб-интерфейса мониторинга

- hosts: dnsdist
  roles:
    - { role: PowerDNS.dnsdist,
        dnsdist_servers: ['9.9.9.9'],
        dnsdist_webserver_address: "{{ ansible_default_ipv4['address'] }}:8083",
        dnsdist_webserver_password: 'geheim' }

Изменения

Подробный журнал изменений всех изменений, примененных к роли, доступен здесь.

Тестирование

Тесты проводятся с помощью Molecule.

$ pip install tox

Чтобы протестировать все сценарии, выполните

$ tox

Чтобы выполнить произвольную команду molecule

$ tox -e ansible29 -- molecule test -s dnsdist-18

Лицензия

MIT

О проекте

Dnsdist is a highly scriptable and DDoS aware DNS loadbalancer

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