dnsdist
Ansible Роль: dnsdist
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