24 мая 2016

Сбор конфигураций сетевого оборудования с контролем версионности


В любой сети, с любым количеством устройств необходимо организовать централизованный и автоматический бэкап конфигураций сетевого оборудования. С этим успешно справятся как коммерческие, вендорные продукты, так и бесплатный софт Rancid. А в связке с WebSVN он позволит сравнивать разные версии конфигураций и наглядно видеть внесенные в них изменения.







Rancid (Really Awesome New Cisco confIg Differ), не смотря на название, успешно переваривает конфигурации не только Cisco, но и Juniper.

Устанавливам Rancid и SVN
sudo apt-get install rancid subversion

Добавляем алиасы для почты в /etc/aliases
rancid-all: root
rancid-admin-all: root

И активируем их в системе
newaliases

Правим конфиг /etc/rancid/rancid.conf
TERM=network;export TERM
umask 027
TMPDIR=/tmp; export TMPDIR
BASEDIR=/var/lib/rancid; export BASEDIR
PATH=/usr/lib/rancid/bin:/usr/bin:/usr/sbin:/bin:/usr/local/bin:/usr/bin; export PATH
CVSROOT=$BASEDIR/svn; export CVSROOT
LOGDIR=$BASEDIR/logs; export LOGDIR
RCSSYS=svn; export RCSSYS
LIST_OF_GROUPS="network"

Проверяем что был создан пользователь rancid
cat /etc/group /etc/passwd | grep rancid
rancid:x:133:
rancid:x:122:133::/var/lib/rancid:/bin/bash

Создаем файл с авторизационными данными /var/lib/rancid/.cloginrc
add user * admin
add autoenable * 1
add password * superpassword
add method * ssh telnet

Если требуется ввод enable пароля(Cisco ASA привет), файл будет выглядеть так
add user * admin
add autoenable 10.10.10.1 0
add password 10.10.10.1 superpassword enablepassword
add autoenable * 1
add password * superpassword
add method * ssh telnet

Меняем права на файл чтобы его мог читать только пользователь rancid
chown rancid. /var/lib/rancid/.cloginrc
chmod 600 /var/lib/rancid/.cloginrc

Дальше создаем репозитории SVN
sudo su -c /var/lib/rancid/bin/rancid-cvs -s /bin/bash -l rancid

Будет создан файл /var/lib/rancid/network/router.db.
Заполняем базу сетевых устройств в формате "hostname:type:status:name". Можно указывать IP или FQDN.
10.10.10.1:cisco:up:"R-MSK-1"
10.10.10.2:cisco:up:"R-MSK-2"
10.10.10.3:juniper:up:"R-MSK-3"
10.10.10.4:juniper:up:"R-MSK-4"

Пробуем тестовое подключение /usr/lib/rancid/bin/clogin -f /var/lib/rancid/.cloginrc 10.10.10.2
root@zb:~# /usr/lib/rancid/bin/clogin -f /var/lib/rancid/.cloginrc 10.10.10.2
spawn ssh -c 3des -x -l admin 10.10.10.2
The authenticity of host '10.10.10.2 (10.10.10.2)' can't be established.
RSA key fingerprint is 7f:23:c5:4a:9d:e6:ea:65:a2:f9:33:11:3b:46:d3:9c.
Are you sure you want to continue connecting (yes/no)? 
Host 10.10.10.2 added to the list of known hosts.
yes
Warning: Permanently added '10.10.10.2' (RSA) to the list of known hosts.
admin@10.10.10.2's password: 
Type help or '?' for a list of available commands.
ASA-MSL-RA> enable
Password: ***********
ASA-MSL-RA# 
ASA-MSL-RA# 
ASA-MSL-RA# 
ASA-MSL-RA# exit

Logoff

Connection to 10.10.10.2 closed.

Если работает, запускаем сбор со всех устройств из базы
sudo su -c /var/lib/rancid/bin/rancid-run -s /bin/bash -l rancid

И добавляем задание в крон (запуск каждые 6 часов)
sudo su -c "/usr/bin/crontab -e -u rancid"
0 */6 * * * /usr/bin/rancid-run

Приступаем к устанавке веб-морды SVN. В процессе установки указываем путь /var/lib/rancid/svn
apt-get install websvn

Меняем группу и права на папку
chgrp -R www-data /var/lib/rancid/svn
chmod g+w -R /var/lib/rancid/svn

В файле указываем подсети или адреса с которых можно подключаться в веб-морде
# Configuration for websvn using php4.

Alias /websvn /usr/share/websvn


  ## No MultiViews
  DirectoryIndex index.php
  Options FollowSymLinks
  ## MultiViews
  #DirectoryIndex wsvn.php
  #Options FollowSymLinks MultiViews
  ## End MultiViews
Order deny,allow
Deny from all
Allow from 10.10.12.0/255.255.255.0
 
    php_flag magic_quotes_gpc Off
    php_flag track_vars On
  

Веб-морда доступна по адресу http://serverIP/websvn