Control de Versiones para Sysadmins
sep 15, 17:55
Una buena práctica en la administración de servidores es aplicar control de versiones para los archivos de configuración y otros referidos al funcionamiento del sistema operativo, de manera similar a lo que se hace con el código de las aplicaciones, aunque con ciertas características especiales.
Se puede usar cualquier sistema de control de versiones: CVS, Subversion, Git, etc. pero para éste caso específico voy a usar Bazaar , primero porque cumple con los requerimientos y segundo porque es muy fácil de usar.
Si bien la mayoría de los archivos de configuración se encuentran en el directorio /etc, hay que considerar otros directorios: tareas cron, scripts de sistema, etc. También podría ser necesario tener un listado de permisos de directorios importantes o listado de paquetes instalados. Como se ve, los archivos están distribuidos por todos lados así que el versionado se debe hacer a nivel de la raíz del sistema operativo y así conservar la misma estructura. Ésto es muy fácil:
bzr init /
Con este comando, ya tenemos un repositorio armado en nuestro servidor y además tenemos la facilidad de que si queremos eliminarlo, solo hay que borrar el directorio .bzr que está en la raíz del S.O.
Una vez hecho ésto procedemos a agregar los archivos o directorios que queremos versionar. Por ejemplo:
bzr ignore etc/httpd/logs
bzr add /etc/httpd
bzr commit /etc/httpd -m "estructura inicial configuración httpd"
bzr ignore indica que se va a ignorar el directorio logs (con ignore siempre hay que usar rutas relativas), luego se agrega y se hace commit del directorio /etc/httpd . Es una buena práctica indicar un mensaje coherente con -m , podría ser de utilidad cuando no nos acordemos para qué añadimos “esa opción” el año pasado.
Ahora, toda está información probará ser muy útil, pero aún sigue almacenada en el mismo servidor. Podemos también trasladarla a un repositorio central usando:
bzr push sftp://config@servidorcentral/~/servidor01
Lo que hace push es crear una nueva rama del repositorio pero en este caso lo hará en un servidor central dentro de un directorio con nombre servidor01. Para que esto funcione necesitaremos antes haber creado un usuario config. De esta manera en el servidor central se arma una estructura con las configuraciones de cada uno de los servidores versionados. Hay que tomar en cuenta que cuando se realiza un bzr push remotamente, no se copia la estructura si no la metadata, es decir el directorio .bzr . Pero la estructura es muy fácil de recrear con:
bzr checkout
Es decir que, desde el servidor central, se podrá revisar la configuración del resto de servidores actual y pasada. Eso sí, hay que mantener la costumbre de hacer los commits después de hacer las configuraciones necesarias y los push una vez que se está satisfecho con el resultado.
estoy escribiendo una herramienta para hacer esto de forma automatica y poder recrear todo desde cero indicando que Host uno quiere reconstruir:
http://code.google.com/p/pacha
— alfredo · ene 23, 06:10 · #