PowerDNS.pdns

Rol de Ansible: Servidor Autoritativo de PowerDNS

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

Un rol de Ansible creado por el equipo detrás de PowerDNS para configurar el Servidor Autoritativo de PowerDNS.

Requisitos

Instalación de Ansible 2.12 o superior.

Dependencias

Ninguna.

Variables del Rol

Las variables disponibles se enumeran a continuación, junto con sus valores predeterminados (ver defaults/main.yml):

pdns_install_repo: ""

Por defecto, el Servidor Autoritativo de PowerDNS se instala desde los repositorios de software configurados en los hosts de destino.

# Instala el Servidor Autoritativo de PowerDNS desde el repositorio oficial 'master'
- hosts: all
  roles:
    - { role: PowerDNS.pdns,
        pdns_install_repo: "{{ pdns_auth_powerdns_repo_master }}" }

# Instala el Servidor Autoritativo de PowerDNS desde el repositorio oficial '4.7.x'
- hosts: all
  roles:
    - { role: PowerDNS.pdns,
        pdns_install_repo: "{{ pdns_auth_powerdns_repo_47 }}" }

# Instala el Servidor Autoritativo de PowerDNS desde el repositorio oficial '4.8.x'
- hosts: all
  roles:
    - { role: PowerDNS.pdns,
        pdns_install_repo: "{{ pdns_auth_powerdns_repo_48 }}" }

# Instala el Servidor Autoritativo de PowerDNS desde el repositorio oficial '4.9.x'
- hosts: all
  roles:
    - { role: PowerDNS.pdns,
        pdns_install_repo: "{{ pdns_auth_powerdns_repo_49 }}" }

Los ejemplos anteriores muestran cómo instalar el Servidor Autoritativo de PowerDNS desde los repositorios oficiales de PowerDNS (ver la lista completa de repositorios predefinidos en vars/main.yml).

- hosts: all
  vars:
    pdns_install_repo:
      name: "powerdns" # el nombre del repositorio
      apt_repo_origin: "example.com"  # usado para fijar los paquetes de PowerDNS al repositorio proporcionado
      apt_repo: "deb http://example.com/{{ ansible_distribution | lower }} {{ ansible_distribution_release | lower }}/pdns main"
      gpg_key: "http://example.com/MYREPOGPGPUBKEY.asc" # clave pública GPG del repositorio
      gpg_key_id: "MYREPOGPGPUBKEYID" # para evitar reimportar la clave cada vez que se ejecute el rol
      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 }

También es posible instalar el Servidor Autoritativo de PowerDNS desde repositorios personalizados, como se demuestra en el ejemplo anterior. Nota: Estos repositorios son ignorados en Arch Linux.

 pdns_install_epel: True

Por defecto, se instala EPEL para satisfacer algunas dependencias del Servidor Autoritativo de PowerDNS como protobuf. Para omitir la instalación de EPEL, establece pdns_install_epel en False.

pdns_package_name: "{{ default_pdns_package_name }}"

El nombre del paquete del Servidor Autoritativo de PowerDNS, pdns en sistemas similares a RedHat y pdns-server en sistemas similares a Debian.

pdns_package_version: ""

Opcionalmente, permite establecer una versión específica del paquete del Servidor Autoritativo de PowerDNS que se instalará.

pdns_install_debug_symbols_package: False

Instalar los símbolos de depuración del Servidor Autoritativo de PowerDNS.

pdns_debug_symbols_package_name: "{{ default_pdns_debug_symbols_package_name }}"

El nombre del paquete de depuración del Servidor Autoritativo de PowerDNS que se instalará cuando pdns_install_debug_symbols_package sea True, pdns-debuginfo en sistemas similares a RedHat y pdns-server-dbg en sistemas similares a Debian.

pdns_user: pdns
pdns_group: pdns

El usuario y grupo bajo los cuales se ejecutará el proceso del Servidor Autoritativo de PowerDNS.
NOTA: Este rol no crea el usuario o grupo, ya que asumimos que han sido creados por el paquete u otros roles.

pdns_service_name: "pdns"

Nombre del servicio de PowerDNS.

pdns_service_state: "started"
pdns_service_enabled: "yes"

Permite especificar el estado deseado del servicio del Servidor Autoritativo de PowerDNS.

pdns_disable_handlers: False

Desactivar el reinicio automático del servicio en cambios de configuración.

pdns_config_dir: "{{ default_pdns_config_dir }}"
pdns_config_file: "pdns.conf"

Archivo y directorio de configuración del Servidor Autoritativo de PowerDNS.

pdns_config: {}

Diccionario que contiene la configuración del Servidor Autoritativo de PowerDNS.
NOTA: La configuración de las backends de PowerDNS y las directivas config-dir, setuid y setgid deben configurarse a través de las variables de rol pdns_user, pdns_group y pdns_backends (ver templates/pdns.conf.j2). Por ejemplo:

pdns_config:
  master: yes
  slave: no
  local-address: '192.0.2.53'
  local-ipv6: '2001:DB8:1::53'
  local-port: '5300'

configura el Servidor Autoritativo de PowerDNS para escuchar solicitudes DNS entrantes en el puerto 5300.

pdns_service_overrides:
  User: {{ pdns_user }}
  Group: {{ pdns_group }}

Diccionario con sobrescrituras para el servicio (solo systemd). Esto se puede usar para cambiar cualquier configuración de systemd en la categoría [Service].

pdns_backends:
  bind:
    config: '/dev/null'

Diccionario que declara todos los backends que te gustaría habilitar. Puedes usar múltiples backends del mismo tipo utilizando la sintaxis {backend}:{instance_name}. Por ejemplo:

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'

Por defecto, este rol solo inicia el backend bind con un archivo de configuración vacío.

pdns_mysql_databases_credentials: {}

Credenciales administrativas para el backend MySQL que se utilizan para crear las bases de datos y usuarios del Servidor Autoritativo de PowerDNS. Por ejemplo:

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"

Ten en cuenta que esto solo debe contener las credenciales para los backends gmysql proporcionados en pdns_backends.

pdns_sqlite_databases_locations: []

Ubicaciones de las bases de datos SQLite3 que deben ser creadas si se usa el backend gsqlite3.

pdns_lmdb_databases_locations: []

Ubicaciones de las bases de datos LMDB que deben ser creadas si se usa el backend lmdb.

Ubicaciones del esquema base de MySQL y SQLite3. Cuando se establece, este valor es utilizado y no se detectan automáticamente.

pdns_mysql_schema_file: ''

pdns_sqlite3_schema_file: ''

Ejemplos de Playbooks

Ejecutar como un maestro utilizando el backend bind (cuando ya tienes un archivo 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'

Instalar la última construcción '41' del Servidor Autoritativo de PowerDNS habilitando el backend MySQL. También proporciona las credenciales administrativas de MySQL para crear e inicializar automáticamente el usuario y la base de datos del Servidor Autoritativo de 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 }}"

NOTA: En este caso, el rol usará las credenciales proporcionadas en pdns_mysql_databases_credentials para crear e inicializar automáticamente al usuario (user, password) y la base de datos (dbname) conectándose al servidor MySQL (host, port).

Configurar el Servidor Autoritativo de PowerDNS en modo 'master' leyendo zonas de dos base de datos PostgreSQL diferentes:

- 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

Configurar el Servidor Autoritativo de PowerDNS para ejecutarse con el backend gsqlite3. La base de datos SQLite será creada e inicializada por el rol en la ubicación especificada por la variable 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 }}"

Registro de Cambios

Un registro de cambios detallado de todas las modificaciones realizadas en el rol está disponible aquí.

Pruebas

Las pruebas se realizan mediante Molecule.

$ pip install tox

Para probar todos los escenarios, ejecuta

$ tox

Para ejecutar un comando de molécula personalizado

$ tox -e ansible214 -- molecule test -s pdns-49

Licencia

MIT

Acerca del proyecto

Install and configure the PowerDNS Authoritative DNS Server

Instalar
ansible-galaxy install PowerDNS.pdns
Licencia
mit
Descargas
128.2k
Propietario