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.
6 Replies to “AnsibleEPS: Colección de playbooks de Ansible”