AnsibleEPS: Colección de playbooks de Ansible

AnsibleEPS es una colección de playbooks de Ansible desarrollada en la Unidad de Laboratorios de la EPS para automatizar la infraestructura IT del centro. Nos permite gestionar la gran cantidad de servicios y servidores que tenemos, automatizando las principales tareas de administración de sistemas y centralizando toda la información relacionada con configuraciones en un único repositorio.

Figura 1. Esquema de funcionamiento de AnsibleEPS

Las tareas que hemos automatizado, por tanto, son la instalación, configuración y chequeo de software, servicios, usuarios, aspectos de seguridad, etc (aquí para más detalles) de sistemas GNU/Linux, en concreto, Debian, Ubuntu Server 14.04 y CentOS, en los cuales se configura la gestión de usuarios del sistema con LDAP y PAM y los clientes DNS (/etc/resolv.conf),  Bácula para copias de seguridad, OSSEC, Munin, Nagios y NTP para el tiempo del sistema; así como servicios como DHCP, Syslog, Nagios, Munin, filtros de red con iptables, etc. La configuración está personalizada para cada servidor dependiendo de sus características (distribución, emplazamiento lógico…) y los servicios que proporciona.
Las tareas se realizan a partir de ficheros de control situados en el repositorio central mencionado (ver figura 1). Desde él se ejecutan los playbooks encargados de realizar las tareas deseadas permitiéndonos controlar los cambios que se han realizado en las configuraciones, proporcionando así una comprobación extra de seguridad. Estas tareas de administración se pueden realizar de una de estas formas (o ambas) y cuya explicación gráfica se puede ver en la figura 2:

  • De modo directo: usando el menú proporcionado y seleccionando la opción adecuada. Podemos usar esta forma para cambiar la configuración de cientos de servidores en unos segundos, simplemente modificando los ficheros de centrales de control y ejecutando los playbooks correspondientes.
  • Periódicamente, programando (mediante cron) cuándo queremos ejecutarlas (por ejemplo, a las 2 de la madrugada).Con esta forma, podemos tener la seguridad de que los servidores están correctamente configurados ya que, en el caso de que alguno ‘se desconfigure’, la administración ‘en background‘ lo devuelve al estado correcto (e informando de los cambios realizados).

Figura 2. Modos de funcionamiento

Todos los cambios realizados y errores producidos se registran para poder ser consultados.

Su funcionamiento está probado para: CentOS 6, Debian 4, 6, 7 y 8 y para Ubuntu 14. Hay un fichero específico para cada sistema operativo y versión en el directorio ‘/etc/ansibleEPS/group_vars’.

AnsibleEPS se puede descargar (la instalación es muy sencilla) con un inventario básico y variables creadas para la infraestructura de ejemplo mostrada en la figura 3:

Figura 3. Infraestructura de ejemplo

Los playbooks desarrollados1 para la infraestructura de ejemplo proporcionada con los servicios indicados (ver figura 3) son los siguientes:

Playbook Descripción Servidores afectados
 baculaAdmon.yml  Configuración de los servidores baculaAdmon  baculadmon1
 common.yml  Configuración básica de servidores: usuarios, grupos, software, PAM, etc.  Todos
 cron.yml  Configuración del crontab del servidor Ansible para lanzar todos los playbooks diariamente.  ansible_server
 crontab.yml  Configuración del crontab en los servidores  Todos
 dhcp.yml  Configuración de los servidores DHCP  server_12, server_22, server_32
 hostsFile.yml  Configuración de /etc/hosts en los servidores  Todos
 iptables.yml   Configuración de las Iptables en los servidores  Todos
 listaCorreos.yml  Configuración lista de correos (locales y alias)  hermes
 munin.yml  Configuración lista de hosts de los servidores maestros de Munin  server_22
 nagios.yml  Configuración Nagios de los servidores maestros de Nagios  sentinel, server_12
 nrpe.yml  Configuración del Nagios NRPE en los servidores  Todos
 pamAccess.yml  Configuración de la PAM Access (/etc/security/access.conf) en los servidores  Todos
 proxmox.yml  Configuración de los servidores Proxmox  proxmox
 sudo.yml  Configuración del Sudo en los servidores  Todos
 update.yml  Actualización de software en los servidores  Todos
 wrappers.yml  Configuración de TCP Wrappers (/etc/hosts.deny y /etc/hosts.allow) en los servidores  Todos

Tabla 1.- Lista de playbooks de la infraestructura de ejemplo

En la tabla 1 iremos enlazando las entradas que publicaremos con la explicación de cada playbook.

¡Esperamos que os sea útil!

(1) No es necesario utilizar todos los playbooks como ‘un todo, un programa’. Se puede utilizar los playbooks que nos interesen, juntos o por por separado.