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.
ansible-galaxy install marcinpraczko.named