Hola de nuevo :),
hoy os traigo una herramienta opensource, que permite gestionar la configuración de vuestros elementos de red de una manera sencilla y clara.
Rancid monitoriza la configuración de los routers (y más dispositivos), incluyendo software y hardware (tarjetas, número de serie…) y usa CVS o subversión para mantener el histórico de cambios.
Rancid hace esto mediante el siguiente método:
- Se loguea en cada dispositivo encontrado en la tabla de routers (router.db).
- Corre varios comandos para conseguir la información que será guardada.
- Da formato a la salida, borra oscilaciones o incrementa los datos.
- Envía avisos por mail en caso de cambios.
- Y sube los cambios al control de versiones.
Rancid actualmente soporta Cisco routers,Juniper routers,Catalyst switches,Foundry switches, Redback NASs, ADC EZT3 muxes, MRTd, Alteon switches, and HP Procurve switches.
Una vez que hemos visto una pequeña reseña de la aplicación, podemos ponernos manos a la obra.
Instalaremos la aplicación sobre una máquina virtual con Debian6 de sistema operativo, el resto de requisitos hardware no son nada restrictivos.
Instalación
Para la instalación de la aplicación, se ha recurrido a la versión compilada de las fuentes, que podemos obtener a través de la página (http://www.shrubbery.net/rancid/). La versión instalada es la 2.3.8 que a fecha de hoy es la última estable.
Hay algunos prerrequisitos que debemos tener en cuenta:
- Crear usuario rancid: adduser rancid –-home /home/rancid
- Paquetes necesarios antes de la instalación, se pueden encontrar todos en los repositorios de debian sin problema.
o Build-essential
o Expect
o Subversión o CVS
o Postfix
Descomprimimos el .tar.gz
root@rancid:~/rancid-2.3.8# tar -xvf rancid-2.3.8.tar.gz
Dentro de la carpeta resultante, encontramos los ficheros necesarios para la configuración e instalación. Para instalar ejecutamos los siguiente:
cd /home/rancid/rancid-2.3.8
./configure –prefix =/home/rancid
Make install
Nota: En nuestro caso hemos descomprimido el tar en /home/rancid
Este proceso nos crea el árbol de directorios necesarios para manejar la herramienta.
/home/rancid/var -> aqui encontraremos los grupos de rancid y los logs
/home/rancid/bin -> en este directorio están los binarios
/home/rancid/etc -> Aquí encontramos el fichero de configuración de rancid
Configuración
Editamos el fichero rancid.conf en /home/rancid/etc:
CVSROOT=$BASEDIR/CVS
RCSSYS=svn
Cambiamos el control de versions de cvs a svn y
LIST_OF_GROUPS = “grupo1 grupo2”
Donde “grupo1 grupo2” son los nombres de los grupos de elementos de red que vamos a crear. Podemos crear un grupo que sea SwitchesPlanta1, con los Switches de la planta 1, o cualquier agrupación que se nos ocurra.
Del fichero de configuración principal no tenemos que tocar nada más. Ahora pasamos a crear los usuarios (user/pass) de los switches/routers que vamos a gestionar. Para ello:
- En /home/rancid/share/rancid encontramos un ejemplo de fichero de autenticación, llamado .cloginrc.sample. Lo copiamos directamente en nuestra carpeta /home/rancid quitándole la extensión .sample.
cp /home/rancid/share/rancid/cloginrc.sample /home/rancid/.cloginrc
En este fichero añadimos los switches/routers que queramos gestionar con su usuario y password. Nos fijamos que la información se guarda en texto plano y por lo tanto hay que tener cuidado extremo con el contenido de este fichero. Lo preferible es guardarlo con unos permisos restrictivos (600) y cambiando el owner al propio usuario rancid. Las líneas del fichero, tendrán una forma tal que así.
add user switch0 root
add password switch0 *Password* {*Password enable*}
add autoenable switch0 1
add method switch0 telnet
add cyphertype switch0 3des
root -> Usuario del switch
*Password* -> Password de root
*Password enable* -> En caso de ser necesario hacerse superusuario para ejecutar ciertos comandos.
Method -> telnet o ssh
Cyphertype -> tipo de encriptación.
Una vez modificados los ficheros rancid.conf y .cloginrc ya estamos en disposición de crear el control de versiones que incluirá la información una vez ejecutemos rancid. Para ello ejecutamos el binario rancid-cvs como usuario rancid que nos creará el árbol de subdirectorios para svn.
Una vez hecho esto nos aparecerá un directorio /home/rancid/var/*grupo* donde encontraremos el fichero router.db, en el cual podemos añadir los switches que gestionaremos. El formato de este fichero será:
10.156.1.1:cisco:up
siendo:
10.156.1.1 -> Ip o nombre del switch a gestionar.
Cisco -> marca del switch
Up-> estado del switch
Podemos comprobar si las credenciales por acceso remoto funcionan mediante el binario clogin:
/bin$ /home/rancid/bin/clogin 10.156.1.1
10.156.1.1
spawn telnet 10.156.1.1
Trying 10.156.1.1...
Connected to 10.156.1.1.
Escape character is '^]'.
User Access Verification
Password:
Router>enable
Password:
Router#
Si la configuración en el fichero .cloginrc es correcta, debería conectarse automaticamente por telnet al switch.
Si la prueba anterior es satisfactoria, podemos proceder a crear el control de versiones, para ello ejecutamos:
/home/rancid/bin/rancid-cvs
Este comando creará el árbol de directorios necesario para mantener el control de versiones. Nos aparecerán los siguientes directorios.
/home/rancid/var/CVS. Directorio raíz del repositorio configurado a través de la variable CVSROOT en el fichero rancid.conf
/home/rancid/var/logs. Directorio de los logs de la aplicación, también configurable a través del fichero de configuración rancid.conf. En cada ejecución de rancid, se alamacena un log con el proceso realizado por la aplicación y el estado del mismo.
/home/rancid/var/<NombreGrupo>. Rancid generará un directorio con el nombre de cada grupo que hayamos incluido en el fichero rancid.conf. En este directorio encontramos la siguiente distribución:
o Directorio configs: aquí almacenará la información de los elementos que estén dados de alta en el fichero router.db, está información será la que muestre el control de versiones.
o Router.db: en este fichero daremos de alta los elementos que gestionaremos a través de rancid. El formato del fichero es:
switch0:hp:up
o Switch0: Nombre o ip del elemento a gestionar
o Hp: marca del switch
o Up: estado del switch
o routers.all: Una vez ejecutado rancid, aquí se mostrará la información de los elementos gestionados, del mismo modo que en router.db, pero sin el estado.
o routers.down: En caso de no poder conectar con algún elemento rancid lo pondrá como down hasta nueva comprobación.
o routers.up: en este fichero irá el caso contrario, los elementos que detecte como levandado los almacenará en este fichero.
Ahora ya estamos en disposición de ejecutar rancid. Para ello ejecutamos el binario rancid-run que encontraremos en /home/rancid/bin/
/home/rancid/bin/rancid-run
Una vez acabe podemos ver el correcto funcionamiento, mediante los logs y comprobando si en el directorio /home/rancid/var/<NombreGrupo>/config se ha creado el correspondiente fichero con la información buscada.
Opcionalmente podemos configurar rancid para enviar un mail cuando una configuración ha sido cambiada después de correr el script de rancid. Para hacer esto, instalamos postfix:
apt-get install postfix
Para permitir el envio de correos desde rancid a nuestro servidor de SMTP, configuramos el archivo /etc/postfix/main.cf, modificando la siguiente entrada:
relayhost= FQDN_or_IP_addresse_of_your_smtp_server
reiniciamos postfix:
/etc/init.d/postfix restart
Podemos probar si los correos llegan, de la siguiente manera.
#telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 localhost ESMTP Postfix (Ubuntu)
ehlo mail
250-localhost
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250 8BITMIME
mail from: <test@test.com>
250 Ok
rcpt to: <your_email@yourcompany.com>
250 Ok
data
354 End data with .
Subject: This is a test !
Wake up please!
.
250 Ok: queued as BD8261C01D4
quitConnection closed by foreign host.
Si comprobamos los logs de correo deberiamos ver nuestro correo.
Por último programamos el crontab para que rancid se ejecute cuando sea necesario.
crontab -e -u rancid
# run ranid-run script every day at 00:30
30 00 * * * /home/rancid/bin/rancid-run
Listo!.Con esto tendriamos configurado rancid.
Espero que sea de utilidad.
Saludos,
Víctor.