03 – ETCKeeper

Bienvenidos al tercer episodio de deployando.me, el podcast de tecnología para sysadmins y devops. Soy Rodolfo Pilas y estoy grabando el 8 de noviembre de 2016.

Estoy cada vez más contento con el resultado del podcast. Las descargas y suscriptores tanto en iTunes, iVoox o Stitcher se han disparado de forma exponencial, una razón puede deberse a que es un podcast nuevo y antes no teníamos ningún suscriptor.

Si tu escuchas este podcast por web, o si lo haces mediante una aplicación en tu dispositivo móvil para que te avise automáticamente cada nuevo episodio, te doy las gracias y también agradezco a los que difunden el podcast en las redes sociales.

En el episodio anterior, sobre la utilidad Augeas, solo mantuve algunos intercambios con colegas. Coincidimos que Augeas es una herramienta a tener en cuenta cuando quieres automatizar la configuración de algún archivo particular y no quieres entrar a instalar o configurar un sistema de gestión de configuración como Ansible, Puppet, Chef, Salt u otro. De hecho, tanto puppet como ansible se pueden valer de augeas para hacer cambios.

Sigan suscribiéndose al podcast en iVoox, iTunes o Stitcher y dejan sus comentarios en el blog deployando.me

Para este episodio quiero hablar de un problema que tenemos a la hora de administrar nuestros servidores entre varios. O incluso cuando es uno mismo que va haciendo cambios en las configuraciones. Y me refiero a cómo generamos respaldos o copias de nuestros archivos de configuración antes de hacer los cambios.

A ver, ¿quién no ha generado un archivo punto bak antes de modificar la configuración?

A lo largo de mi vida profesional lo hice varias veces. Otras generaba “punto original” o “punto cero uno”, “punto cero dos” y así a cada cambio.

Recuerdo una vez, hace muchos años, para una instalación utilicé una herramienta llamada Revision Control System (RCS) del proyecto GNU, que me permitía guardar versiones del archivo que modificaba y, obviamente comparar entre ellas y recuperar en caso necesario. En su momento RCS fue una solución excelente para el sistema que manteníamos entre varios.

Pero ahora tenemos sistemas de control de versiones, entonces:

Levante la mano quién tiene su /etc en un git o un subversion

Si lo tienes bárbaro. Si no lo tienes, entonces escucha lo que te voy a contar de una herramienta llamada ETCKeeper que hará todo el trabajo de versiones por ti.

Etckeeper es una colección de herramientas que permiten mantener versiones de la carpeta /etc en repositorio git, mercurial, bazaar o darcs. Para hacer esto, etckeeper se correrá automáticamente una vez al día, mediante una unidad timer de systemd o en el crontab del sistema y generará una versión de los archivos.

También etckeeper se integra con el sistema de instalación de paquetes (apt, yum o pacman) para registrar los archivos que corresponden al /etc cada vez que se instale nuevos archivos de configuración. Así que una vez que tengas instalado etckeeper verás correr el commit al terminar de instalar o actualizar paquetes.

Pero además, etckeeper mantiene un archivo de metadatos con aquellas cosas que los sistemas de versiones no mantienen, pero que para la carpeta /etc son importantes: por ejemplo, los permisos del archivo /etc/shadow.

Y hay más, pues etckeeper es modular y es muy fácil intervenir con sus módulos para configuraciones particulares o requisitos propios, no previstos por etckeeper.

Entonces en la carpeta /etc/etckeeper nos encontraremos una serie de sub-carpetas donde podemos poner nuestros scripts para ejecutar antes de un commit, al hacer commit, o antes o después de instalar nuevos paquetes, o directamente tener una lista de archivos que queremos ignorar.

Para tenerlo funcionando es solamente instalarlo y ejecutar el comando ‘etckeepr init’, eso ya mantendrá versiones de tu carpeta /etc contra un repositorio local.

Por supuesto, que si luego deseas tenerlo funcional contra un git remoto o un bazaar con autenticación, entonces tendrás que hacer unas simples configuraciones en el archivo /etc/etckeeper/etckeeper.conf

Hoy día, para grandes despliegues utilizo ansible para gestionar toda la instalación y configuración de los servidores, pero en aquellos casos donde son unos pocos servidores o vamos a gestionarlos entre varios y no todos manejan ansible, entonces etckeeper es, para mi, una herramienta obligatoria, como el vim o el htop.

Etckeeper es un software libre de Joey Hess que se distribuye bajo licencia GPL.

Soy Rodolfo Pilas, en twitter me siguen por @pilasguru y les dejo un saludo a todos, confiando en que este podcast les haya aportado para mejorar y, como siempre, espero sus inquietudes y sugerencias comentando en deployando.me

Referencias