topic:rancid

Установка и настройка связки Rancid+ViewVC

Rancid - это софт для сбора, хранения и учета версий конфигураций сетевого оборудования.
Отлично работает с оборудованием Cisco, HP, Juniper, Huawei, H3C. Единственный неприятный минус, это хранение паролей для захода на оборудование в открытом виде.

ViewVC - это веб-интерфейс для просмотра CVS репозиториев. Rancid как раз может складывает кофиги в CVS.

Связку Rancid+ViewVC будем использовать для удобной работы с конфигурациями сетевого оборудования.

Установка Rancid

Доставляем необходимые пакеты

# yum install cvs expect gcc MySQL-python telnet

Скачиваем и распаковываем свежую версию Rancid.
ftp://ftp.shrubbery.net/pub/rancid/rancid-3.1.tar.gz

Версию 3.1 уже с официального фтп скачать нельзя.
Свежие версии rancid не хотят вставать на Centos 6, с perl какая-то беда.
Все последние разы rancid надо было ставить быстро и с проблемой не разбирался.

Rancid 3.1 нормально ставится на минимальную версию Centos 6, ссылка - rancid-3.1.tar.gz

# wget ftp://ftp.shrubbery.net/pub/rancid/rancid-3.1.tar.gz
# tar -zxvf rancid-3.1.tar.gz

Добавляем группу netadm в которую впоследствии будет добавлен пользователь rancid.

# groupadd netadm

Создаем пользователя rancid и задаем ему пароль.

# useradd -g netadm -d /home/rancid rancid
# passwd rancid

Компилируем и устанавлваем rancid.

# pwd
/root/src/rancid-3.1

# ./configure --prefix=/home/rancid
# make install

Копируем файл в котором будут содержаться пароли от сетевого оборудования и выставляем права.

# cp /root/src/rancid-3.1/cloginrc.sample /home/rancid/.cloginrc
# chmod 0640 /home/rancid/.cloginrc
# chown -R rancid:netadm /home/rancid/
# chmod 770 /home/rancid/

В файле rancid.conf определяем группы сетевого оборудование.
Все дальнейшие изменения в файлах надо делать от пользователся rancid.

# su - rancid
$ cp ~/etc/rancid.conf ~/etc/rancid.conf.orig
$ joe ~/etc/rancid.conf
...
# list of rancid groups
#LIST_OF_GROUPS="sl joebobisp"
# more groups...
#LIST_OF_GROUPS="$LIST_OF_GROUPS noc billybobisp"
LIST_OF_GROUPS="cisco juniper"
#
...

Создаем CVS репозиторий для ранее определенных групп.

$ /home/rancid/bin/rancid-cvs

Перечисляем оборудование с которого будем снимать конфигурацию.

$ joe ~/var/juniper/router.db
...
srx-test;juniper;up

...

где:

  • srx-test - это имя устройства, как оно прописано в /etc/hosts.
    Или можно целиком написать url устройства.
  • juniper - тип устройсва.
    Для каждого типа rancid использует свои скритпы.
  • up - говорм rancid, что устройство работаем и можно пробовать снять конфиг.

Обращаем внимание, что в версиях rancid после 3.x в качестве разделителя используется “;”.

Задаем пользователя, пароль и имя устройства (как в router.db) для захода на сетевое оборудование.
Файл читается до первого совпадения.

$ joe ~/.cloginrc
...
add method srx-test ssh
add user srx-test srx-user
add password srx-test srx-passwd
...

Примеры .cloginrc для различного оборудования:

  • Конкретный марщрутизаторы Cisco.
    В строке пароля указывается пользовательский и enable пароль.
    add method CISCO-ROUTER-1 ssh
    add user CISCO-ROUTER-1 USER-NAME
    add password CISCO-ROUTER-1 USER-PASSWORD ENABLE-PASSWORD
  • Несколько маршрутизаторов Cisco можно записать через *.
     
    add method CISCO-ROUTER-* ssh
    add user CISCO-ROUTER-* USER-NAME
    add password CISCO-ROUTER-* USER-PASSWORD ENABLE-PASSWORD
  • У маршрутизаторов Juniper enable пароля нет, пишем только пользовательский пароль.
     
    add method SRX* ssh
    add user SRX* USER-NAME
    add password SRX* USER-PASSWORD
  • Для коммутаторов HP Procurve надо включать опцию autoenable.
    Пароль оператора и менеджера был одинаковый.
     
    add method PROCURVE-SW* ssh
    add user PROCURVE-SW* USER-NAME
    add autoenable PROCURVE-SW* 1
    add password PROCURVE-SW* USER-PASSWORD
  • Настройка для маршрутизаторов Brocade CER.
     
    add method BROCADE-CER* ssh
    add user BROCADE-CER* USER-NAME
    add autoenable BROCADE-CER* 1
    add password BROCADE-CER* USER-PASSWORD

Вручную запускаем rancid (от пользователя rancid) и проверяем, что конфигурация снялась.

$ rancid-run -r srx-test
$ ll ~/var/juniper/configs/
total 484
drwxr-x---. 2 rancid netadm   4096 Feb  30 23:59 CVS
-rw-r-----  1 rancid netadm 488712 Feb  30 23:59 srx-test

Пишем правило cron для rancid.

$ crontab -e
# #############################################
# Crontab for rancid on myserver
# #############################################
# Hourly Check
1 * * * * /home/rancid/bin/rancid-run

# Daily Clean Up of Diff Files at 11 50 pm
50 23 * * * /usr/bin/find /home/rancid/var/logs -type f -mtime +2 -exec rm {} \;

# Daily Clean Up of .SITE.run.lock Files at 11 50 pm
50 23 * * * rm /tmp/.*.lock

Скрипты Rancid

Huawei

Скрипты - huawei-rancid.tar
Что бы подключить скрипты надо файл ~/etc/rancid.types.base добавить строчку:

huawei;script;hwrancid

В router.db оборудование прописываем так:

S5328-EL;huawei;up

H3С

Скрипты - h3c-rancid.tar
~/etc/rancid.types.base:

h3с;script;h3сrancid

router.db:

A5500-SI;h3c;up

VYOS

Настройка пользователя rancid на сетевом оборудовании

Brocade

Заводим read-only пользователя rancid и дополнительно разрешаем ему выполять команду

username rancid privilege 5 password some-Pass
privilege exec level 5 skip-page-display

Почта от Rancid

Правим файл /etc/aliases:

...
rancid-cisco:           config@company.name
rancid-admin-cisco:     config@company.name, lead@company.name
rancid-huawei:          config@company.name
rancid-admin-huawei:    config@company.name, lead@company.name
...

Применяем изменения в файле командой newaliases.

На алиас rancid-cisco будут приходить письма и дифами консигураций, на rancid-admin-cisco служебные сообщения.
Часть алиаса после rancid- и rancid-admin- должна совпадать с именем группы которую задавали в файле rancid.conf.


Отключение проверки ssh ключа

Для некоторых сетевых устройств полезно отключать проверку ssh т.к. на них часто могут меняться ключи.
А когда устройств реально много, проще отключить проверку для всех.

Что бы откючить проверку надо в домашней директории rancid в папке .ssh создать файл config след. содержания:

Host *
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null

Установка ViewVC

Скачиваем и распаковываем свежую версию ViewVC.

# wget http://viewvc.tigris.org/files/documents/3330/49392/viewvc-1.1.23.tar.gz
# tar zxvf viewvc-1.1.23.tar.gz

Ставим.

# cd viewvc-1.1.23
# ./viewvc-install
...
ViewVC file installation complete.

Consult the INSTALL document for detailed information on completing the
installation and configuration of ViewVC on your system.  Here's a brief
overview of the remaining steps:

  1) Edit the /usr/local/viewvc-1.1.23/viewvc.conf file.

  2) Either configure an existing web server to run
     /usr/local/viewvc-1.1.23/bin/cgi/viewvc.cgi.
     
     Or, copy /usr/local/viewvc-1.1.23/bin/cgi/viewvc.cgi to an
     already-configured cgi-bin directory.
     
     Or, use the standalone server provided by this distribution at
     /usr/local/viewvc-1.1.23/bin/standalone.py.
...

Настраиваем viewvc для работы с CVS репозиторием.

# cd /usr/local/viewvc-1.1.23/
# joe viewvc.conf
...
## Example:
## cvs_roots = cvsroot: /opt/cvs/repos1,
##             anotherroot: /usr/local/cvs/repos2
##
#cvs_roots =

cvs_roots = cvsroot: /home/rancid/var/CVS 
...
## Example:
## root_parents = /opt/svn: svn,
##                /opt/cvs: cvs
##
#root_parents =

root_parents = /home/rancid/var/CVS : cvs
...
## Example:
## rcs_dir = /usr/bin/
##
#rcs_dir =

rcs_dir = /usr/local/bin
...
## use_rcsparse: Use the rcsparse Python module to retrieve CVS
## repository information instead of invoking rcs utilities [EXPERIMENTAL]
##
use_rcsparse = 1
...
## use_localtime: Display dates as UTC or in local time zone.
##
#use_localtime = 0
use_localtime = 1
...
#allowed_views = annotate, diff, markup, roots
allowed_views = annotate, diff, markup, roots, co
...

Копируем файлы query.cgi и viewvc.cgi в рабочую папку веб-сервера.

# cp /usr/local/viewvc-1.1.23/bin/cgi/*.cgi /var/www/cgi-bin
# ll /var/www/cgi-bin
total 8
-rwxr-xr-x. 1 root root 1782 Feb 30 23:59 query.cgi
-rwxr-xr-x. 1 root root 1781 Feb 30 21:59 viewvc.cgi

Правим /etc/httpd/conf.d/vhosts.conf

# joe /etc/httpd/conf.d/vhosts.conf
...
# Custom Rancid Config
<VirtualHost *:80>
        DocumentRoot /var/www
        ScriptAlias /cgi-bin/ "/var/www/cgi-bin"
        ScriptAlias /viewvc /var/www/cgi-bin/viewvc.cgi
        ScriptAlias /query /var/www/cgi-bin/query.cgi
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>
</VirtualHost>

Добавляем пользователя apache в группу netadm.

# joe /etc/group
...
netadm:x:5000:apache
...

Создаем mysql базу данных и пользователей.

# mysql -u root -p
mysql> create database viewvc_db;
mysql> create user 'viewvc_user'@'localhost' identified by 'pass1';
mysql> grant all privileges on viewvc_db.* to 'viewvc_user'@'localhost' with grant option;
mysql> create user 'viewvc_rouser'@'localhost' identified by 'pass2';
mysql> grant all privileges on viewvc_db.* to 'viewvc_rouser'@'localhost' with grant option;
mysql> flush privileges;

Заливаем структуру базы данных viewvc_db.

# cd /usr/local/viewvc-1.1.23/bin/
# ./make-database
./make-database:20: DeprecationWarning: The popen2 module is deprecated.  Use the subprocess module.
  import popen2
MySQL Hostname (leave blank for default): 
MySQL Port (leave blank for default): 
MySQL User: viewvc_user
MySQL Password: pass1
ViewVC Database Name [default: ViewVC]: viewvc_db

Database created successfully.  Don't forget to configure the 
[vsdb] section of your viewvc.conf file.

Настраиваем viewvc для работы с mysql.

# joe /usr/local/viewvc-1.1.23/viewvc.conf
...
[cvsdb]

## enabled: Enable database integration feature.
##
enabled = 1

## host: Database hostname.  Leave unset to use a local Unix socket
## connection.
##
host = localhost

## post: Database listening port.
##
port = 3306

## database_name: ViewVC database name.
##
database_name = viewvc_db

## user: Username of user with read/write privileges to the database
## specified by the 'database_name' configuration option.
##
user = viewvc_user

## passwd: Password of user with read/write privileges to the database
## specified by the 'database_name' configuration option.
##
passwd = pass1

## readonly_user: Username of user with read privileges to the database
## specified by the 'database_name' configuration option.
##
readonly_user = viewvc_rouser

## readonly_passwd: Password of user with read privileges to the database
## specified by the 'database_name' configuration option.
##
readonly_passwd = pass2
...

Заполняем базу данных.

# cd /usr/local/viewvc-1.1.23/bin/
# ./cvsdbadmin rebuild /home/rancid/var/CVS/CVSROOT/
Using repository root `/home/rancid/var/CVS'
Purging existing data for repository root `/home/rancid/var/CVS'
[CVSROOT/loginfo [0 commits]]
[CVSROOT/editinfo [0 commits]]
[CVSROOT/config [0 commits]]
[CVSROOT/notify [0 commits]]
[CVSROOT/verifymsg [0 commits]]
[CVSROOT/cvswrappers [0 commits]]
[CVSROOT/rcsinfo [0 commits]]
[CVSROOT/modules [0 commits]]
[CVSROOT/commitinfo [0 commits]]
[CVSROOT/checkoutlist [0 commits]]
[CVSROOT/taginfo [0 commits]]

Пробуем зайти на веб-интерфейс http://x.x.x.x/viewvc

Нормальной работе мешает selinux, в чем проблема не разбирался, в локальных инсталяция допустимо отключить.

Все должно быть хорошо.

Полезные материалы

topic/rancid.txt · Last modified: 2021/08/12 08:35 (external edit)

Page Tools