marcinpraczko.named

Información rápida

Este rol es un fork del siguiente repositorio:

Razones para crear este fork y ajustarlo:

  • Named todavía se utiliza y sería bueno tener un rol funcional.
  • El rol tiene una buena estructura y es flexible en términos de configuración.
  • Este rol no funcionó desde el principio y algunos problemas no se abordaron desde 2015.

Ansible-role-named

Versión: 0.1.4

  • Requiere Ansible 2.0+
  • Compatible con la mayoría de las versiones de RHEL/CentOS 6.x, 7.x, Debian y Ubuntu

Instalación

Directamente desde ansible-galaxy (última versión)

$ ansible-galaxy install marcinpraczko.named

Directamente desde el repositorio de GitHub

A veces, algunos cambios se han aplicado a la rama develop o feature y aún no se han liberado. Ansible-galaxy permite instalar roles directamente desde GitHub.

mkdir testing-roles
cd testing-roles
ansible-galaxy install -p roles git+https://github.com/marcinpraczko/ansible-role-named.git,develop

El ejemplo anterior instalará la rama develop. Esto puede ajustarse a cualquier SHA de git, etiqueta o nombre de rama, dependiendo de los requisitos.

Para verificar qué versión está instalada, se puede usar el comando:

ansible-galaxy list -p roles

Comenzando

Instalación de BIND (named)

Instalar BIND (named) y todas las dependencias requeridas es muy sencillo y se puede hacer antes de la configuración o individualmente:

Solo instalar

$ ansible-playbook -t install -i hosts named.yml

Ejecutar todo el Playbook

$ ansible-playbook -i hosts named.yml

Ejemplo de Playbook, Hosts y Variables de Grupo

Ejemplo de Playbook

- name: "Acciones necesarias para que los maestros estén en un estado óptimo"
  hosts: named_masters
  remote_user: root

  roles:
    - "marcinpraczko.named"

- name: "Acciones necesarias para que los esclavos estén en un estado óptimo"
  hosts: named_slaves
  remote_user: root

  roles:
    - "marcinpraczko.named"

Ejemplo de Hosts

[named_masters]
127.0.0.1

#[named_slaves]
#127.0.0.1

Ejemplo de Variables de Grupo

named_masters:

named_acls:
  public_slaves:
    - 8.8.8.8
    - 9.9.9.9
  private_slaves:
    - 192.168.25.5
    - 192.168.25.6

named_zones:
# Nota el _ aquí, esto hace feliz a ansible y se reemplaza más adelante en la configuración 
# y zonas automáticamente
  foo_com:
    type: master
    allow_transfer:
      - public_slaves
    ttl: 3000

named_slaves:

named_zones_create_masters: False 

named_zones:
# Nota el _ aquí, esto hace feliz a ansible y se reemplaza más adelante en la configuración 
# y zonas automáticamente
  foo_com:
    type: slave
    master:
      - 7.7.7.7

Este rol consiste en tareas de instalación y configuración, que están etiquetadas con install o configure y pueden ejecutarse individualmente o todas juntas. Este rol tiene acciones para crear un archivo named.conf y un archivo included.conf que contendrán acls e inclusiones de zona, así como archivos de zona dinámicos basados en variables predeterminadas o de grupo.

Configurables

Hay bastantes configurables en este rol; aquí hay una lista resumida de los valores predeterminados (una lista actualizada se puede encontrar en defaults/main.yml):

## Opciones de instalación
named_conf_file_location: /etc/named.conf

# Asegúrate de que sean correctos para tu sistema operativo
named_user: named
named_group: named
named_service_name: named

# Configuraciones específicas de Monit
named_monit_enable: False
named_monit_service_name: monit
named_monit_conf_directory: /etc/monit.d
named_pid_file: /var/run/named/named.pid
named_service_file: /etc/init.d/named

## Opciones de configuración base

# Sección de opciones
named_conf_listen_on_port: 53
named_conf_listen_on_interface:
  - 127.0.0.1
named_conf_listen_on_v6_port: 53
named_conf_listen_on_v6_interface:
  - ::1
named_conf_notify: "no"
named_conf_forwarders:
  - 7.7.7.7
  - 7.7.8.8
named_conf_directory: /var/named
named_conf_dump_file: /var/named/data/cache_dump.db
named_conf_statistics_file: /var/named/data/named_stats.txt
named_conf_memstatistics_file: /var/named/data/named_mem_stats.txt
named_conf_allow_query:
  - any
#named_conf_allow_transfer: none
named_conf_recursion: no
named_conf_dnssec_enable: yes
named_conf_dnssec_validation: yes
named_conf_dnssec_lookaside: auto
named_conf_bindkeys_file: /etc/named.iscdlv.key
named_conf_managed_keys_directory: /var/named/dynamic

# Sección de registro
named_conf_logging_channel: default_debug
named_conf_logging_file_directory: /var/log/named
named_conf_logging_file: named.log
named_conf_logging_severity: info
named_conf_logging_print_severity: yes
named_conf_logging_print_time: yes
named_conf_logging_print_category: yes
named_conf_logging_category_name: default
named_conf_logging_categories:
  - default_debug

named_conf_includes_directory: /etc/named

### Sin acls o inclusiones predeterminadas

## Configuraciones maestros
# Esta configuración determina si se deben crear archivos de zona en el directorio de maestros declarado.
# Normalmente, no querrías crear estos si estás configurando un host esclavo.
named_zones_create_masters: True

### Configuraciones predeterminadas de zona
named_conf_zone_ttl: 21600
named_conf_zone_soa: foo.com. noc.foo.com.
named_conf_zone_refresh: 21600
named_conf_zone_retry: 600
named_conf_zone_expire: 86400
named_conf_zone_expire_min: 3000

Observa que puedes especificar variables predeterminadas para la creación dinámica de archivos de zona, esto puede permitir archivos group_var reducidos, ya que solo puedes especificar excepciones para zonas que requieren configuraciones fuera de los valores predeterminados.

Hechos

Los siguientes hechos son accesibles en tu inventario o fuera de este rol.

  • {{ ansible_local.named.interfaces_ipv4 }}
  • {{ ansible_local.named.interfaces_ipv6 }}
  • {{ ansible_local.named.port_ipv4 }}
  • {{ ansible_local.named.port_ipv6 }}

Pruebas

  • Originalmente, el rol tenía solo el archivo travis.
  • Se añadió la configuración de molecule para permitir probar este rol localmente.

Molecule permite probar roles de ansible localmente usando docker o vagrant. También ayuda a ejecutar validaciones como serverspec o testinfra.

Todo esto hace que probar este rol sea mucho más fácil.

Instalar paquetes requeridos

  • Docker
  • Vagrant

Instalar molecule

  • Instala un entorno virtual de python en tu sistema.
  • Instala molecule dentro del entorno virtual de python.
virtualenv venv
source venv/bin/activate

# Actualiza paquetes comunes de pip
pip install -U pip setuptools wheel

# Instala molecule con los paquetes de python requeridos
pip install -r tests/requirements.txt

Pruebas con molecule

El siguiente comando debería permitir probar el rol con el controlador Vagrant.

NOTA: Ejecutar el siguiente comando por primera vez toma más tiempo (se debe descargar la imagen completa de Vagrant al host local).

molecule test --sudo

El comando anterior ejecutará --sudo solo para las herramientas de verificación, por ejemplo, testinfra o serverspec, etc. Esta opción --sudo no tiene efecto en cómo se está ejecutando ansible.

Acerca del proyecto

A highly configurable role for BIND (named) versions >9

Instalar
ansible-galaxy install marcinpraczko.named
Licencia
gpl-2.0
Descargas
75
Propietario