Installation d'un gestionnaire de configuration d'équipements réseau RANCID

Rancid (Really Awesome New Cisco confIg Differ) est un gestionnaire de configurations d'équipements réseau.
Principalement destiné aux administrateurs réseau, RANCID surveille la configuration d'un routeur ou plus généralement de périphérique réseau, y compris les logiciels et le matériel (cartes, numéros de série, etc.) et utilise CVS (Concurrent Version System), Subversion (SVN) ou Git pour maintenir l'historique des modifications.

Rancid prend actuellement en charge les équipements suivants :

switchs Allied Telesis exécutant AW +

les routeurs Cisco

les routeurs Juniper

les commutateurs Catalyst

les commutateurs Foundry (maintenant Brocade)

les Redback NAS

les muxes ADC EZT3

les commutateurs MRTd (et donc probablement IRRd)

Alteon

HP Procurve

J'ai même ajouté les commutateurs Alcatel-Lucent

Installation

Avant d'installer RANCID nous aurons besoin de certaine chose :

aptitude install cvs cvsweb expect make gcc apache2

Nous allons créer un login particulier rancid pour la gestion de nos équipements réseaux :

groupadd rancid
useradd -m -g rancid -s /bin/sh -b /usr/local rancid

Ensuite, il vous faudra télécharger les sources de RANCID disponible ici

wget ftp://ftp.shrubbery.net/pub/rancid/rancid-3.6.2.tar.gz
tar -xvzf rancid-3.6.2.tar.gz
cd rancid-3.6.2
./configure --prefix=/usr/local/rancid/
make
make install
chown -R rancid:rancid /usr/local/rancid/

Configuration

Les actions suivantes sont faits avec le login rancid su rancid Dans le répertoire /usr/local/rancid, si votre prefix durant l'installation est le même que dans mon exemple. Le manque de caractère / au début des chemins de fichier n'est pas une erreur.

L'installation terminé je vous invite donc dans le répertoire /usr/local/rancid, en tant que login rancid.
Rancid gère les équipements par groupe.
Ainsi, pour chaque groupe sont associés des équipements, et des utilisateurs pour la réception des rapports de sauvegarde.
Le fichier de configuration etc/rancid.conf va nous permettre d'ajouter les groupes d'équipements, en définissant la valeur de LIST_OF_GROUPS, chaque groupe étant séparé par un espace.
Voici un exemple :

LIST_OF_GROUPS="GR1 GR2 GR3 ..."

Quand vous avez fini la création de vos groupes, vous devrez à chaque fois exécuter cette commande pour créer les dépôts associés :

bin/rancid-cvs

vous devrez exécuter cette commandes aussi pour supprimer vos groupes

La connexion aux équipements est assurée par le script clogin.
Ce script est appelé à chaque exécution de rancid-run pour établir la connexion avec l'équipement, et consulte les paramètres d'authentification définis dans le fichier /usr/local/rancid/.cloginrc.
La syntaxe de ce fichier offre une compatibilité avec de nombreux modes d'authentification.
Un exemple de configuration est disponible à l'emplacement suivant share/rancid/cloginrc.sample.
Voici, un exemple :

#methode de connexion
add method < [IP] ou DNS du ou des équipement visés > ssh
add method < [IP] ou DNS du ou des équipement visés > telnet
##MON GR1
#Si, j'ai des équipements HP Procurve
add autoenable < [IP] ou DNS du ou des équipement viser > 1
add user < [IP] ou DNS du ou des équipement visés > <login>
add password < [IP] ou DNS du ou des équipement visés > <Mot de passe>
##MON GR2
#Si, j'ai des équipements CISCO
add password < [IP] ou DNS du ou des équipement visés > <Mot de passe au moment de la connexion> <Mot de passe pour la commande ''enable''>
##GR3
#Si, j'ai des équipements Alcatel Omniswitch (je détails plus bas comment faire)
add autoenable < [IP] ou DNS du ou des équipement visés > 1
add user < [IP] ou DNS du ou des équipement visés > <login>
add password < [IP] ou DNS du ou des équipement visés > <Mot de passe>

Un exemple :

#methode de connexion
add method *.ksh-linux.info ssh
add method 192.168.1.* telnet
##MON GR1
#Si, j'ai des équipements HP Procurve
add autoenable *.net-hp.ksh-linux.info 1
add user *.net-hp.ksh-linux.info admin
add password *.net-hp.ksh-linux.info ksh
##MON GR2
#Si, j'ai des équipements CISCO
add password *.net-cisco.ksh-linux.info ksh ksh
##GR3
#Si, j'ai des équipements Alcatel Omniswitch (je détails plus bas comment faire)
add autoenable *.net-al.ksh-linux.info 1
add user *.net-al.ksh-linux.info admin
add password *.net-al.ksh-linux.info ksh

Les actions de connexion sont faits, il reste à préciser la liste des équipements que RANCID devra traiter.

L'ajout des équipement s'effectue dans le fichier router.db du groupe concerné.
Ainsi, pour le groupe GR1, le fichier se situe à l'emplacement var/GR1/router.db.
Il est construit selon la syntaxe décrite ci-dessous :

[device];[type];[state];[comments]

exemple

vim CVS/GR1/router.db

Ajouter vos équipements réseaux :

sw01.net-hp.ksh-linux.info;hp;up;cœur de réseau du site A
sw02.net-hp.ksh-linux.info;hp;up
...

Définir la mailing-liste

Chaque groupe peut disposer d'une liste d'adresses mails ou d'alias correspondant aux adresses mails des destinataires de rapports de sauvegarde.
Pour chaque groupe, Rancid va considérer deux alias destinataires :

rancid-admin-[GROUPE]

rancid-[GROUPE]

Il faut donc faire correspondre, pour ces alias, les destinataires réels à utiliser pour l'envoi de mails.
Cette correspondance s'effectue dans le fichier /etc/aliases ou /etc/postfix/aliases (pour postfix).
Une fois le fichier complété, le résultat devrait être similaire à cet exemple :

# See man 5 aliases for format
postmaster:root
rancid:mail@ksh-linux.info
#
# Rancid email addresses
#
rancid-admin-GR1:rancid
rancid-GR1:rancid
rancid-admin-GR2:rancid
rancid-GR2:rancid
rancid-admin-GR3:rancid
rancid-GR3:rancid

Puis mettre à jour les alias :

newaliases
/etc/init.d/postfix restart

Utilisation

Le lancement des sauvegardes des équipements est assuré par le script rancid-run.
L'utilisation de cette commande sans paramètres déclenche la sauvegarde de tous les groupes d'équipements renseignés par la variable LIST_OF_GROUPS dans le fichier de configuration etc/rancid.conf.
Cependant, il est également possible de sauvegarder un groupe unique en le renseignant en paramètre.
exemple:
Pour tous les groupes

bin/rancid-run

Pour seulement le groupe GR1

bin/rancid-run GR1

Pour automatiser la sauvegarde de vos équipements, vous pouvez le faire au travers d'un crontab : Voici, un exemple avec le login rancid :

*/6 * * * /usr/local/rancid/bin/rancid-run

Penser à purger les logs de rancid :

30 00 * * * /usr/bin/find /usr/local/rancid/var/logs/ -type f -mtime +5 -exec /bin/rm -Rf {} \;

Configuration de cvsweb

Nous allons configurer cvsweb pour qu'il connaisse le chemin de notre répertoire rancid, pour cela nous allons modifier le fichier /etc/cvsweb/cvsweb.conf:

@CVSrepositories = (
'MES_SWITCHS' => ['MES_SWICTHS', '/usr/local/rancid/var/CVS'],
#'local' => ['Local Repository', '/var/lib/cvs'],

Dans apache2 nous allons créer un hôte virtuelle, pour cela nous allons éditer un fichier rancid.conf dans le répertoire /etc/apache2/sites-available

<VirtualHost *:80>
ServerName <Serveur.votredomaine.com>
DocumentRoot /var/www/html/cvsweb
redirectmatch ^/$ /cgi-bin/cvsweb
<Directory /var/www/cvsweb>
Options +FollowSymLinks -Indexes
AllowOverride None
</Directory>
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel error
ErrorLog ${APACHE_LOG_DIR}/rancid-error.log
CustomLog ${APACHE_LOG_DIR}/rancid-access.log combined
</VirtualHost>

Puis dans /var/www/html nous allons faire un lien symbolique :

ln -s /usr/share/cvsweb cvsweb

Puis vous pouvez faire http://<Serveur.votredomaine.com> cela devrai afficher vos groupes, configurations et les révisions.

prendre en charge les équipements Alcatel-Lucent "omniswitch"

Pour cela télécharger le fichier alcatel-lucent.tar.gz

mv alcatel-lucent.tar.gz /usr/local/rancid/bin
tar -xvzf alcatel-lucent.tar.gz
rm alcatel-lucent.tar.gz
chmod 755 alu*
chown rancid:rancid alu*

Puis dans vos fichier router.db vous aurez à faire cela :

.net-alu.ksh-linux.info;alcatel;up

.net-alu.ksh-linux.info;alcatel;up

Dans le fichier .cloginrc cela :

##GR3
#Si, j'ai des équipements Alcatel Omniswitch
add autoenable *.net-alu.ksh-linux.info 1
add user *.net-alu.ksh-linux.info admin
add password *.net-alu.ksh-linux.info ksh