PowerDNS.dnsdist
Rol de Ansible: dnsdist
Una rol de Ansible creada por el equipo detrás de PowerDNS para configurar dnsdist.
Requisitos
Una instalación de Ansible 2.9 o superior.
Dependencias
Ninguna.
Variables del Rol
Las variables disponibles se enumeran a continuación, junto con sus valores predeterminados (ver defaults/main.yml
):
dnsdist_install_repo: ""
Por defecto, dnsdist se instala desde los repositorios de software configurados en los hosts de destino.
# Instalar dnsdist desde la rama principal
- hosts: dnsdist
roles:
- { role: PowerDNS.dnsdist,
dnsdist_install_repo: "{{ dnsdist_powerdns_repo_master }}"
# Instalar dnsdist 1.3.x
- hosts: dnsdist
roles:
- { role: PowerDNS.dnsdist,
dnsdist_install_repo: "{{ dnsdist_powerdns_repo_13 }}"
Los ejemplos anteriores muestran cómo instalar dnsdist desde los repositorios oficiales de PowerDNS (ver la lista completa de repos predefinidos en vars/main.yml
).
- hosts: all
vars:
dnsdist_install_repo:
name: "dnsdist" # el nombre del repositorio
apt_repo_origin: "example.com" # utilizado para fijar dnsdist al repositorio proporcionado
apt_repo: "deb http://example.com/{{ ansible_distribution | lower }} {{ ansible_distribution_release | lower }}/dnsdist main"
gpg_key: "http://example.com/MYREPOGPGPUBKEY.asc" # clave GPG pública del repositorio
gpg_key_id: "MYREPOGPGPUBKEYID" # para evitar reimportar la clave cada vez que se ejecuta el rol
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 }
También es posible instalar dnsdist desde repositorios personalizados como se demuestra en el ejemplo anterior.
dnsdist_install_epel: True
Por defecto, instala EPEL para satisfacer algunas dependencias de dnsdist como lidsodium
. Para omitir la instalación de EPEL, establece la variable dnsdist_install_epel
en False
.
dnsdist_package_name: "{{ default_dnsdist_package_name }}"
El nombre del paquete dnsdist: "dnsdist" en distribuciones derivadas de RHEL y Debian.
dnsdist_package_version: ""
Opcionalmente, permite establecer una versión específica del paquete dnsdist a ser instalada.
dnsdist_install_debug_symbols_package: False
Instala el paquete de símbolos de depuración de dnsdist.
dnsdist_debug_symbols_package_name: "{{ default_dnsdist_debug_symbols_package_name }}"
El nombre del paquete de símbolos de depuración de dnsdist que se instalará cuando dnsdist_install_debug_symbols_package
sea True
.
dnsdist_acls: []
Configura las ACLS de dnsdist (máscaras de red).
dnsdist_locals: ['127.0.0.1:5300']
Configura las direcciones de escucha de dnsdist.
dnsdist_servers:
- '127.0.0.1'
- "{ address='127.0.0.1:5300', source='127.0.0.1@lo', order=1 }"
La lista de direcciones IP de los servidores DNS de fondo a los que dnsdist debe enviar tráfico o tablas Lua que la función newServer ( https://dnsdist.org/reference/config.html#newServer ) puede procesar.
dnsdist_carbonserver: ""
La dirección IP del servidor Carbon que debe recibir las métricas de dnsdist.
dnsdist_controlsocket: "127.0.0.1"
La dirección IP de escucha del socket de control TCP de dnsdist.
dnsdist_setkey: ""
Clave de cifrado para el socket de control TCP de dnsdist. Si está vacía, se generará una clave aleatoria. Si ya hay una clave presente en el archivo, se mantendrá.
dnsdist_webserver_address: ""
La dirección IP de escucha del servidor web incorporado, vacío para deshabilitar por defecto.
dnsdist_webserver_password: ""
Las credenciales de autenticación para el servidor web incorporado. Deben estar configuradas cuando dnsdist_webserver_address
está configurado.
dnsdist_webserver_apikey: ""
Las credenciales de autenticación para la API incorporada.
dnsdist_webserver_acl: ""
Desde la versión 1.5.0, solo se permiten conexiones desde 127.0.0.1 y ::1 por defecto. Consulta https://dnsdist.org/guides/webserver.html para más información.
dnsdist_config: ""
Configuración adicional de dnsdist que se inyectará tal cual en el archivo dnsdist.conf
.
dnsdist_config_owner: 'root'
dnsdist_config_group: 'root'
Usuario y grupo que poseen el archivo dnsdist.conf
.
dnsdist_service_overrides: {}
Diccionario con las sobrescrituras para el servicio (solo systemd). Esto se puede usar para cambiar cualquier configuración de systemd en la categoría [Service]
.
dnsdist_unit_overrides: {}
Diccionario con las sobrescrituras para la unidad del servicio (solo systemd). Esto se puede usar para cambiar cualquier configuración de systemd en la categoría [Unit]
.
dnsdist_environment_overrides: {}
Diccionario con las sobrescrituras para los entornos del servicio (solo systemd). Esto se puede usar para cambiar cualquier variable de entorno en la configuración de systemd en la categoría [Service]
.
dnsdist_service_state: "started"
dnsdist_service_enabled: "yes"
Permite especificar el estado deseado del servicio DNSdist. Por ejemplo, esto permite instalar y configurar DNSdist sin iniciar automáticamente el servicio.
dnsdist_disable_handlers: False
Desactiva el reinicio automático del servicio en cambios de configuración.
dnsdist_tlslocals: []
Configura los oyentes DNS sobre TLS. Las entradas se copian tal cual, una por una.
dnsdist_force_reinstall: False
Forzar la reinstalación de los paquetes dnsdist realizando una eliminación antes de los pasos de instalación del paquete. Destinado para situaciones donde se necesita realizar un retroceso de dnsdist.
Ejemplo de Playbook
Desplegar dnsdist frente a Quad9 y habilitar la interfaz de monitoreo web.
- hosts: dnsdist
roles:
- { role: PowerDNS.dnsdist,
dnsdist_servers: ['9.9.9.9'],
dnsdist_webserver_address: "{{ ansible_default_ipv4['address'] }}:8083",
dnsdist_webserver_password: 'geheim' }
Registro de Cambios
Un registro de cambios detallado de todos los cambios aplicados al rol está disponible aquí.
Pruebas
Las pruebas se realizan con Molecule.
$ pip install tox
Para probar todos los escenarios, ejecuta
$ tox
Para ejecutar un comando de molécula personalizado
$ tox -e ansible29 -- molecule test -s dnsdist-18
Licencia
MIT
Dnsdist is a highly scriptable and DDoS aware DNS loadbalancer
ansible-galaxy install PowerDNS.dnsdist