Backup de vos Switches (cisco,hp…) automatisé avec Rancid

Rancid & WebSVN

 

Les backups qu’on oublie le plus souvent de faire sont les backup réseau, et quand un problème arrive, on est bien embêté pour retrouver notre configuration exacte.

Heureusement, il existe un outils, nommé Rancid (Really Awesome New Cisco confIg Differ) qui va nous permettre de faire des backups de façon automatisé une fois l’outil mis en place.
Rancid supporte un bon lots de matériel comme les Cisco Catalyst, les Edge router de Juniper, les switchs HP, routeurs Hitachis et beaucoup d’autres (qui sont détaillés plus bas).

En plus de gérer les backups, Rancid sauvegarde nos configurations en CVS / SVN.

Dans cet article, nous allons voir comment installer rancid en mode SVN, et nous installerons ensuite l’interface WEB pour plus de clarté.
Cette installation de Rancid est réalisée sous Centos 6.2 64bit.

Passons maintenant à l’installation de Rancid :

Installation

Nous avons besoin d’installer les pré-requis :

# yum -y install expect cvs python httpd mysql mysql-server gcc make autoconf gccc++ kernel-devel mod_python mysql-python

# yum -y install php-common php-gd php-mcrypt php-pear php-pecl-memcache phpmhash php-mysql php-xml

Puis on crée l’user & le group pour utiliser notre Rancid :

# groupadd netadm
# useradd -g netadm -c “Networking Backups” -d /usr/local/rancid rancid

Ensuite, on crée un répertoire temporaire pour accueillir Rancid et on l’installe :

# mkdir /root/rancid
# cd /root/rancid
# wget ftp://ftp.shrubbery.net/pub/rancid/rancid-2.3.8.tar.gz
# tar -xvzf rancid-2.3.8.tar.gz
# cd rancid-2.3.8
# ./configure –prefix=/usr/local/rancid/
# make install
# cp cloginrc.sample /usr/local/rancid/.cloginrc

Puis on assigne les droits qui vont bien :

chmod 0640 /usr/local/rancid/.cloginrc
chown -R rancid:netadm /usr/local/rancid/
chmod 770 /usr/local/rancid/

Maintenant nous passons à la configuration de notre Rancid, pour cela, faites comme suit :

# vi /usr/local/rancid/etc/rancid.conf

// Ajouter la ligne suivante :

LIST_OF_GROUPS=”networking

Cette “Liste” correspond au groupe dans lequel sera assigné vos switches, vous pouvez donc les organiser comme bon vous semble.

Rancid envoie des rapports par mail, il faut donc ajouter ce qui suit dans /etc/aliases :

# vi /etc/aliases

// Ajouter les lignes suivantes tout en bas :
#
# Rancid email addresses
#
rancid-admin-networking:                 rancid-networking
rancid-networking:                           networkin
noc:                                                networkin@my-web-site.org

// quittez l’éditeur et faites :

# newaliases

Maintenant, nous modifions rancid pour qu’ils fonctionne en mode SVN :

# cd /usr/local/rancid
# vi etc/rancid.conf

// On remplace les CVS par SVN :

RCSSYS=svn; export RCSSYS

CVSROOT=$BASEDIR/SVN; export CSVROOT

Maintenant nous générons nos répertoires :

# su – rancid
$ ./bin/rancid-cvs

Configuration

Puis nous allons ajouter les switches / routeurs dans nos groupes, pour moi ça sera dans “networking” :

$ vi var/CVS/networking/router.db

// J’ajoute mon routeur :

192.168.1.1:cisco:up

// Quittez et faites :

# svn update

Voici la liste matériel que Rancid gère :

DeviceDescription
alteonAn Alteon WebOS switches.
baynetA Bay Networks router.
cat5A Cisco catalyst series 5000 and 4000 switches (i.e.: running the catalyst OS, not IOS).
ciscoA Cisco router, PIX, or switch such as the 3500XL or 6000 running IOS (or IOS-like) OS.
cssA Cisco content services switch.
enterasysAn enterasys NAS. This is currently an alias for the riverstone device type.
erxA Juniper E-series edge router.
ExtremeAn Extreme switch.
ezt3An ADC-Kentrox EZ-T3 mux.
force10A Force10 router.
foundryA Foundry router, switch, or router-switch. This includes HP Procurve switches that are OEMs of Foundry products, such as the HP9304M.
hitachiA Hitachi routers.
hpA HP Procurve switch such as the 2524 or 4108 procurve switches. Also see the foundry type.
mrtdA host running the (merit) MRTd daemon.
netscalarA Netscalar load balancer.
netscreenA Netscreen firewall.
redbackA Redback router, NAS, etc.
tntA lucent TNT.
zebraZebra routing software.
riverstoneA Riverstone NAS or Cabletron (starting with version ~9.0.3) router.
juniperA Juniper router.

 Maintenant que nous avons ajouter nos routeurs / switches, il nous faut renseigner leurs passwords, usernames, et le mode d’accès, pour cela, nous allons nous rendre dans .clogin.rc :

# vi .clogin.rc

// Ajouter à la fin :

add password 192.168.1.1 password
add method 192.168.1.1 telnet
add autoenable 192.168.1.1 1

Si vous avez plusieurs routeurs / switchs, avec le même password, vous pouvez remplacer l’ip par “*”.

Votre Rancid est maintenant configuré, vous pouvez voir s’il backup bien vos switchs en faisant :

# su – rancid
$ bin/rancid-run

Une fois terminé, allez voir vos logs :

# tail -50 var/logs/networking.*************.**********

Vous devriez obtenir quelque chose du genre :

starting: Tue Aug 21 02:01:01
Trying to get all of the configs.
All routers successfully completed.
cvs diff: Diffing .
cvs diff: Diffing configs
cvs commit: Examining .
cvs commit: Examining configs
ending: Tue Aug 21 02:01:06

Pour que Rancid fasse des backups hebdomadaire, il suffit d’ajouter une tache Cron :

00 4 * * 0 /usr/local/rancid/bin/rancid-run #backup hebdomadaire (à 4H tous les dimanches)

Passons maintenant à notre interface web :

# cd /root
# wget http://websvn.tigris.org/files/documents/1380/49057/websvn-2.3.3.zip
# tar xvf websvn-2.3.1.tar.gz
# mkdir /usr/local/websvn
# cp –R ~/websvn-2.3.1/* /usr/local/websvn/
# chown apache:apache /usr/local/websvn

Puis on ajoute note host dans la config httpd :

# vi /etc/httpd/conf.d/websvn.conf

// Ajouter les lignes suivantes

Alias /websvn /usr/local/websvn

<Directory /var/www/cvs>
Allow from all
</Directory>

Puis on crée le fichier de config :

# cp /usr/local/websvn/include/distconfig.php /usr/local/websvn/include/config.php
# vi /usr/local/websvn/include/config.php

// Nous ajoutons cette ligne :

$config->addRepository(‘Switches’, ‘file:///usr/local/rancid/var/CVS/’);

Puis on ajoute l’utilisateur apache au groupe netadm :

usermod -a -G netadm apache

Vous pouvez maintenant acceder à l’interface web : http://ipadresse/websvn.

Voici le résultat :

WebSVN - Rancid Networking

 

Voila, vous pouvez maintenant automatiser vos backups routeurs / switches grâce à Rancid et visualiser tout ça de manière simple et efficace grâce à WebSVN !

Pour toute questions / remarque, n’hésitez pas à utiliser les commentaires

About Alexandre Nogard

Check Also

Bash Scripting : Creation de vhosts automatisés avec Certificat Lets Encrypt

Bonjour à tous, Il y a quelques temps, j’avais posté un script bash permettant de …

CentOs / RHEL : Rollback de mise à jour avec Yum history

Une mise à jour de php ou d’apache qui tourne mal, ça nous est déjà …

Twitter en CLI sur Centos 6.X

Vous avez toujours eu envie de Twitter en CLI sur CentOs ? Nous allons le …

18 comments

  1. Hi!!
    How do you do it so that it has more than 300 switch, all listed in a file. Txt
    Thanks!
    PA

  2. Salut! excuse je te le mets en Français!!

    Comment tu fais pour que ça prennes tous les adresses IP des switch mit dans un fichier.txt
    Car j’ai plus de 300 switch à sauvegarder.
    Merci
    PA

  3. ah mais oui biensurs !!! Merci

    Par contre j’ai pas mal de switch Linksys, comment faire?
    Encore Merci
    PA

  4. il met impossible de générer le répertoire rancid-cvs.
    pouvez vous m’aidez .
    Merci
    PA

  5. Bonjour,

    Je souhaite intégrer des switchs D-Link à rancid pour qu’il en sauvegarde la configuration, cependant ils ne font pas partit de la liste du matériel pris en charche… :/
    Comment faire ?

    Merci d’avance,
    Flo.

  6. Merci bien ! :)
    Mais je bloque à la partie configuration, mon fichier router.db se trouve dans $ vi var/networking/router.db
    et non pas $ vi var/CVS/networking/router.db
    Ensuite impossible d’effectuer svn update ou même avec cvs update :/

  7. Edit : Apparment le problème d’emplacement n’est en fait pas un réel problème et l’update est a effectuer dans le dossier networking :)

  8. Bonjour et merci pour le tuto.

    Comment supprimer des groupes dans l’interface Web ?

    Je m’explique, j’ai fait plusieurs groupes de test qui figurent dans mon interface Web.
    J’ai supprimé les répertoires dans mon dossier /var/lib/rancid, mais il figure toujours dans mon interface Web.

  9. Salut,
    J’ai bien suivi votre tuto, mais j’ai un problème sur Websvn. Je retrouve bien les fichiers qu’il faut mais quand je clique dessus c’est vide, router.db et config de switch! il me marque bien newrouter etc…
    Alors que les fichiers config qui se trouve dans le dossier /configs est bien compléter!!
    avez vous une idée!?
    Merci

  10. Bonjour,

    je bloque juste à la fin, ce fichier est vide pour moi, voir n’existait pas : /etc/httpd/conf.d/websvn.conf
    J’ai bien rajouté les 3 lignes du tuto.
    Je travaille sous CentOS 6.2
    Quelqu’un a une idée s’il vous plait ?

  11. Bonjour,

    Merci pour le tuto. La première partie fonctionne bien mais quand je tente de me connecter à l’interface web j’ai l’erreur 403 Forbidden. Quand je regarde dans les logs j’ai l’erreur suivante : Directory index forbidden by Options directive. Il s’agirait d’une erreur de fichier index.php mais je n’ai pas trouvé la solution à mon problème. Pouvez-vous m’aider ?
    Merci
    Benjamin

  12. J’ai résolu mon problème en modifiant la ligne “DirectoryIndex index.html” en “DirectoryIndex index.html index.php” dans /etc/httpd/conf/httpd.conf

  13. Bonjour,

    je suis en train de configurer rancid, mais j’ai des erreurs que je n’arrive pas résoudre si vous pourriez m’aider svp merci.

    starting: Wed May 7 14:45:25 CEST 2014

    Trying to get all of the configs.
    10.0.253.200: missed cmd(s): all commands
    10.0.253.200: End of run not found
    !
    =====================================
    Getting missed routers: round 1.
    10.0.253.200: missed cmd(s): all commands
    10.0.253.200: End of run not found
    !
    =====================================
    Getting missed routers: round 2.
    10.0.253.200: missed cmd(s): all commands
    10.0.253.200: End of run not found
    !
    =====================================
    Getting missed routers: round 3.
    10.0.253.200: missed cmd(s): all commands
    10.0.253.200: End of run not found

  14. j’utilise la version rancid-3.0

  15. Bonjour,

    Merci pour le tuto, question bête, mais comment restaurer :D ?, il y a moyen de générer des CLI ?

  16. Salut,

    Je suis Armand, j’aimerai utiliser rancid pour faire la sauvegarde de switchs zyxel dans mon réseau. Mais seulement sur ce document cette marque n’est pas reprise parmi les matériels pris en charge par Rancid. Merci de m’éclairer.

Leave a Reply

Your email address will not be published. Required fields are marked *