respaldo automatizado de /etc con etckeeper
Una de los dolores de cabeza cuando hay mas de dos sysadmin que trabajan en conjunto es el mantener en control de que cosa y cuando se modifico algún archivo de configuración de algún programa/demonio/etc. Muchas veces es una tarea considerada fome/latosa o simplemente no siempre se recuerda respaldar el archivo original luego de realizar tuning a nuestro servicio no se consiguen los resultados esperados u en el peor caso siquiera levantar el demonio. Dentro de la chiches que ofrece ubuntu jaunty podemos encontrar dos combinaciones muy potentes para tratar de solventar y disminuir de alguna manera el riesgo sobre todo en entornos de producción (servidor), y los elegidos son baazar y etckeeper.
Baazar es un sistema de control de versiones open source desarrollado por canonical que ofrece flexibilidad y facil manejo. En la otra mano tenemos etckeeper es una aplicacion que permite mantener un respaldo automatizado del directorio /etc usando un sistema de control de versiones (en este caso baazar ya que viene instalada por defecto en la distro). Esto me permite tener un historial de todos los cambios realizados en todos los archivos de configuraciones ya sea cuando manualmente edito algo u cuando hago alguna actualizacion de paquete.
Luego de todo el blabla a la parte practica:
sudo apt-get install etckeeper
Al terminar pues con la configuracion que trae por defecto es suficiente por ahora, de todas maneras se puede hojear el archivo “/etc/etckeeper/etckeeper.conf”.
Para iniciar debemos ejecutar
sudo etckeeper init
Eso inicia el repositorio inicial con el sistema de control de versiones especificado (en este caso baazar). Ahora debemos enviar los archivos del repositorio /etc (funciona igual que bzr commit ),
sudo etckeeper commit "Envio Inicial" que devolverá como salida una larga lista de archivos y terminará en algo como:
added xml/docbook-xml.xml.old added xml/rarian-compat.xml added xml/sgml-data.xml added xml/sgml-data.xml.old added xml/xml-core.xml added xml/xml-core.xml.old added xulrunner-1.9/system-greprefs.js Committed revision 1.
Esto creo el repositorio en baazar para todo el directorio “/etc/” (excepto la lista de archivos ignorados) y guardo todos los cambios “commit” en la versión numero 1. Como ver para creer haré la siguiente prueba: editare el archivo /etc/hosts y agregare la linea “192.168.0.1 gateway-falso” , guardare los cambios y luego hare un commit para comparar los cambios hechos.
sudo etckeeper commit "Cambio en tabla hosts"
Bien ahora veamos el historial con la diferencia entre el archivo original y el modificado:
kamus@judith:~$ sudo bzr diff -c2 /etc
=== modified file 'hosts'
--- hosts 2009-05-24 21:14:06 +0000
+++ hosts 2009-05-24 21:23:54 +0000
@@ -1,5 +1,6 @@
127.0.0.1 localhost
127.0.1.1 judith
+192.168.0.1 gateway-falso
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
Se puede ver como aparece con símbolo “+” la linea que agregue y la fecha de modificación del archivo en las ultimas dos revisiones hechas. Una de las ventajas de esta versión disponible en los repositorios oficiales es que cada vez que realizas un apt-get install paquete ese ejecuta un commit (respaldo) de tu /etc. Recomiendo ver los links que donde esta mi fuente de documentación pues hay una serie de tres capítulos con ejemplos bien completo.
[1]http://fnords.wordpress.com/2009/02/23/etckeeper-chronicles-1/ , Extensión de la documentación para uso de etckeeper.
[2]http://doc.bazaar-vcs.org/bzr.dev/en/mini-tutorial/index.html , Excelente mini tutorial de 5 minutos para el uso basico de baazar.