=========== Rancid ===========
**Création du serveur** : 14 Novembre 2017
\\ **Auteurs** : Thomas 'Nymous' Gaudin & Simon 'Ziman' Leder
\\ **Rôle** : Sauvegarde des configuration des switchs
==== Données techniques ====
OS : Debian 8
* rancid (installé depuis les jessie-backports)
* git
Spécifications techniques :
* 1 vCPU
* 512 Mo RAM
* 8 Go mémoire
==== Installation ====
* Activer les jessie-backports en créant un fichier ''/etc/apt/sources.list.d/jessie-backports.list'' avec le contenu suivant :
deb http://ftp2.fr.debian.org/debian jessie-backports main
(Vérifier avant que la version dans les dépôts officiels de debian n'a pas été mise à jour, à cette date c'est la 3.5.1.)
* Installer rancid grâce à ''apt -t jessie-backports install rancid''
* Installer git
==== Préparation d'un switch (Cisco) pour test ====
* Se connecter au switch en question.
* Entrer en mode configuration avec ''conf ter''
* Ajouter l'utilisateur en lecture seule
username rancid privilege 3 secret
* Autoriser l'affichage de la conf par ''rancid''
privilege exec level 3 show running-config view full
* Vérifier en se connectant au switch en tant que rancid qu'on peut bien lancer la commande ''show running-config view full'', et que ''show running-config'' ne renvoie rien.
==== Configuration ====
* Éditer la configuration ''/etc/rancid/rancid.conf''
* Vérifier l'emplacement du ''BASEDIR''
* Changer ''RCSSYS=CVS;'' en ''RCSSYS=git;''
* Définir les différents groupes de switchs à sauvegarder (pour tout sauvegarder, j'ai créé un seul groupe appelé de manière très originale "Switchs") : ''LIST_OF_GROUPS="Switches";''
* Se connecter en tant que l'utilisateur ''rancid'' (''su rancid'')
* Se déplacer dans le home de l'utilisateur (''cd''), qui devrait être ''/var/lib/rancid'' (ça doit aussi être le même que celui défini comme ''BASEDIR'' dans la conf, si l'un des deux change il faut changer l'autre !!)
* Lancer ''./bin/rancid-cvs'' (si la commande n'est pas trouvée, les binaires sont dans ''/usr/lib/rancid/bin'', mais normalement un lien symbolique a été créé). La commande va créer les différents répertoires pour les git, les fichiers de conf par groupe de switches définis plus haut.
* Éditer le fichier ''.cloginrc'' (toujours dans ''/var/lib/rancid'').
# Login configuration
# Thomas 'Nymous' Gaudin, 08/01/2017
add autoenable * 1
add method * ssh
add timeout * 90
add user * rancid
add password * rancidpassword
# Si besoin d'être admin sur le switch
# Commenter la ligne autoenable dans ce cas
#add user * rezoleo
#add password * rezoleopassword enablepassword
# Pour renseigner le mot de passe pour un switch en particulier
#add user 172.30.64.22 rancid
#add password 172.30.64.22 rancidpassword
La ligne ''autoenable'' indique à rancid qu'il ne doit pas tenter de gagner des privilèges supplémentaires à la connexion (commande ''enable'' en Cisco). Mettre à 1 si jamais le compte avec lequel il se connecte peut afficher la conf, mettre à 0 s'il faut faire des opérations en tant qu'admin.
\\ La ligne ''timeout'' est très importante, par défaut rancid n'attend pas assez et croit que les switchs sont inaccessibles.
* Éditer le fichier ''/router.db''
# On peut utiliser des noms DNS
swb2;cisco;up
# Ou des adresses IP
172.30.64.23;cisco;up
Attention, ce sont bien des '';'' et non des '':'' ! (L'ancienne version de rancid utilisait des '':'')
\\ Bien penser à indiquer ''up'' à la fin de chaque switch qu'on veut sauvegarder ; on peut les passer en ''down'' pour que rancid remarque qu'il ne doit plus s'en occuper mais qu'il conserve leur conf dans le git (si on retire la ligne du switch, rancid considère qu'il n'existe plus et le supprime).
* Tester avec ''./bin/clogin '' qu'on peut bien se connecter.
* Faire un run complet de test avec ''./bin/rancid-run''. Normalement, on reçoit un mail avec les diff depuis la dernière sauvegarde, et le git se remplit (dans ''CVS/''. Si ça ne marche pas, regarder dans les logs, regarder l'output de la commande, regarder le mail envoyé...
==== Automation ====
Si tout marche bien, c'est parti pour automatiser tout ça ! On crée le compte rancid sur tous les switchs comme décrit plus haut, on met tous les switchs dans ''Switches/router.db'' et tous les mots de passe dans ''.cloginrc'', on met le ''rancid-run'' dans cron ou anacron, et roulez jeunesse !