PowerDNS.dnsdist

Rol de Ansible: dnsdist

Estado de Construcción Licencia Rol de Ansible Etiqueta de GitHub

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

Acerca del proyecto

Dnsdist is a highly scriptable and DDoS aware DNS loadbalancer

Instalar
ansible-galaxy install PowerDNS.dnsdist
Licencia
mit
Descargas
22.7k
Propietario