Rancid — отличная программа для сохранения конфигураций и отслеживания изменений на коммутаторах и маршрутизаторах Cisco и Mikrotik — RANCID Данной программой я пользуюсь уже очень давно и пришло время добавить сбор конфигураций с оборудования под управлением RouterOS. Сразу отмечу,что последняя версия RANCID не будет работать на CentOS 6 (это касается сбора конфигураций Cisco WLC)! В качестве бонуса настройка ViewVC
Версия RANCID поддерживающая WLC контроллеры Cisco не поддерживается CentOS 6. Поэтому пришлось использовать rancid-3.1-4.el6.x86_64.rpm вместо rancid-3.2-1.gf.el6.x86_64.rpm На CentOS 7 испытания проводились тут. Для простоты установки зависимостей, лучше всего использовать репозиторий EPEL
Подготовка
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
yum install epel-release wget https://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm rpm -ivh epel-release-6-8.noarch.rpm yum install rancid Разрешение зависимостей --> Проверка сценария ---> Package rancid.i686 1:3.1-4.el6 will be для установки --> Обработка зависимостей: expect >= 5.40 для пакета: 1:rancid-3.1-4.el6.i686 --> Обработка зависимостей: /usr/bin/expect для пакета: 1:rancid-3.1-4.el6.i686 --> Обработка зависимостей: perl(LockFile::Simple) для пакета: 1:rancid-3.1-4.el6.i686 --> Обработка зависимостей: perl(Mail::Mailer) для пакета: 1:rancid-3.1-4.el6.i686 --> Проверка сценария ---> Package expect.i686 0:5.44.1.15-5.el6_4 will be для установки --> Обработка зависимостей: libtcl8.5.so для пакета: expect-5.44.1.15-5.el6_4.i686 ---> Package perl-LockFile-Simple.noarch 0:0.207-2.el6 will be для установки ---> Package perl-MailTools.noarch 0:2.04-4.el6 will be для установки --> Обработка зависимостей: perl(Date::Parse) для пакета: perl-MailTools-2.04-4.el6.noarch --> Обработка зависимостей: perl(Date::Format) для пакета: perl-MailTools-2.04-4.el6.noarch --> Проверка сценария ---> Package perl-TimeDate.noarch 1:1.16-13.el6 will be для установки ---> Package tcl.i686 1:8.5.7-6.el6 will be для установки --> Проверка зависимостей окончена Зависимости разрешены ============================================================================================= Пакет Архитектура Версия Репозиторий Размер ============================================================================================ Установка: rancid i686 1:3.1-4.el6 epel 221 k Установка зависимостей: expect i686 5.44.1.15-5.el6_4 base 256 k perl-LockFile-Simple noarch 0.207-2.el6 epel 23 k perl-MailTools noarch 2.04-4.el6 base 101 k perl-TimeDate noarch 1:1.16-13.el6 base 37 k tcl i686 1:8.5.7-6.el6 base 1.9 M Результат операции ============================================================================================ Установить 6 пакет(а,ов) |
Так же необходим пакет glibc. Установим его
1 2 3 |
yum install glibc |
Файлы конфигурации
Конфигурация самой программы
1 2 3 |
/etc/rancid/rancid.conf |
Конфигурация правил подключения (авторизация, имя пользователя, протокол)
1 2 3 |
/var/rancid/.cloginrc |
Исполняемые файлы
1 2 3 |
/usr/libexec/rancid/ |
Установка
1 2 3 4 5 |
rmp -e rancid wget http://dl.fedoraproject.org/pub/epel/6/x86_64/Packages/r/rancid-3.1-4.el6.x86_64.rpm rpm -ivh rancid-3.1-4.el6.x86_64.rpm |
Настройка
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
cat /etc/rancid/rancid.conf | egrep -v '(#|^$)' TERM=network;export TERM LC_COLLATE="POSIX"; export LC_COLLATE uid=`perl -e 'print "$>"'` test "$uid" -eq 0 && echo "Do not run $0 as root!" && exit 1 umask 027 PERL5LIB="/usr/lib64/rancid"; export PERL5LIB TMPDIR=/tmp; export TMPDIR # Основная директория программы BASEDIR=/WorkSpace/rancid; export BASEDIR PATH=/usr/libexec/rancid:/usr/bin:.:/bin:/usr/local/bin:/usr/bin; export PATH CVSROOT=$BASEDIR/CVS; export CVSROOT # Куда складывать конфигурации LOGDIR=/WorkSpace/rancid/logs RCSSYS=cvs; export RCSSYS # Количество потоков PAR_COUNT=25; export PAR_COUNT # Группы устройств LIST_OF_GROUPS="cisco mikrotik" |
В домашней директории пользователя rancid — /var/rancid/.cloginrc, настраиваем правила авторизации
Логика следующая — описываем способы авторизации для подсетей. Если в подсети смешанный тип устройств, то необходимо их описать с использованием полного IP адреса
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
cat /var/rancid/.cloginrc | egrep -v '(#|^$)' # Устройство с нестандартным подключением и именем пользователя add user 192.168.15.1 USER add password 192.168.15.1 PASWORD_USER add noenable 192.168.15.1 1 add method 192.168.15.1 ssh # Устройство с нестандартным подключением и именем пользователя add user 192.168.15.10 USER add password 192.168.15.10 PASSWORD_USER add noenable 192.168.15.10 1 add method 192.168.15.10 ssh # Описание устройств cisco, с использованием enable # Не использовать enable - параметр add noenable 192.168.15.1 1 add password 192.168.*.* PASSWORD1 PASSWORD2 add password 10.10.*.* PASSWORD1 PASSWORD2 add password 10.168.224.* PASSWORD1 PASSWORD2 # Исключения, в котором описаны устройства с отличным именем пользователя add user 10.10.12.1 USER2 add user 10.10.12.2 USER2 add user 10.10.12.3 USER2 add user 192.168.6.154 USER3 add user 192.168.11.254 USER4 add user 192.168.12.1 USER2 add user 192.168.32.1 USER5 # Для всех подсетей задаем имена пользователя по умолчанию add user 10.10.*.* USER add user 192.168.*.* USER0 add user 10.168.224.* USER0 # Для коммутаторов <span id="titlecisco2">SG300-10 10-Port Gigabit Managed Switch - нестандартное приглашение на авторизацию </span> add noenable 192.168.51.192 1 add method 192.168.51.192 telnet add userprompt 192.168.51.192 {"\User\ Name:"} |
По началу не очень понятно, но при ближайшем рассмотрении, все встает на свои места.
Далее необходимо инициализировать каталог, к тором будут храниться конфигурации. Для этого входим в систему под пользователем rancid и из директории /usr/libexec/rancid/ запускам ./rancid-cvs, которая создаст репозитории, указанные в /etc/rancid/rancid.conf параметр LIST_OF_GROUPS
1 2 3 4 5 |
su - rancid cd /usr/libexec/rancid/ ./rancid-cvs |
Далее добавляем в список $BASEDIR/cisco/router.db, указанного в файле /etc/rancid/rancid.conf, устройства, с которых будем собирать конфигурации.
1 2 3 4 5 6 7 8 9 10 |
#Fromat: ip;typ;state;[desc] 10.10.12.1;cisco;up;"Dust" 10.10.12.2;cisco;up;"Dust" 10.10.12.3;cisco;up;"NNovgorod" 10.10.12.4;cisco;up;"NNovgorod" 10.10.12.5;cisco;up;"Dust" 10.10.12.6;cisco;up;"Dust" 10.10.12.7;cisco;up;"Dust" |
$BASEDIR/mikrotik/router.db
1 2 3 4 5 6 7 8 9 10 11 |
#Fromat: ip;typ;state;[desc] 192.168.32.1;mikrotik;up;"Elochka" 192.168.32.10;mikrotik;up;"Elochka" 192.168.32.11;mikrotik;up;"Elochka" 192.168.32.12;mikrotik;up;"Elochka" 192.168.32.13;mikrotik;up;"Elochka" 192.168.32.14;mikrotik;up;"Elochka" 192.168.32.15;mikrotik;up;"Elochka" 192.168.7.100;mikrotik;up;"Elochka" |
Устанавливаем и настраиваем ViewVC
1 2 3 4 |
yum install viewvc-httpd viewvc viewvc-httpd-fcgi service httpd restart |
Настроим пути в файле /etc/viewvc/viewvc.conf
1 2 3 4 5 |
cvs_roots = cvsroot: /var/rancid/CVS/ root_parents = /var/rancid/CVS/ : cvs service httpd restart |
Пока пустим всех
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
ScriptAlias /viewvc /usr/lib/python2.7/site-packages/viewvc/bin/wsgi/viewvc.fcgi Alias /viewvc-static /usr/share/viewvc/templates/docroot <Directory /usr/lib/python2.7/site-packages/viewvc/bin/wsgi> Options -Indexes <Files viewvc.fcgi> <IfModule mod_authz_core.c> # Apache 2.4 #Require local Require all granted </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 #Order allow,deny #Allow from 192.168.1.0/24 #Allow from ::1 </IfModule> </Files> </Directory> <Directory /usr/share/viewvc/templates/docroot> Options -Indexes <IfModule mod_authz_core.c> # Apache 2.4 #Require local Require all granted </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 #Order allow,deny #Allow from 192.168.1.0/24 #Allow from ::1 </IfModule> </Directory> |
Если при открытии страницы выдается сообщение — Access Denie, то надо смотреть /etc/httpd/conf.d/viewvc-wsgi.conf Если доступ есть, но не открывает файлы — stat error: [Errno 13] Permission denied: ‘/var/rancid/CVS/Entries.Log’, то смотрим SELinux (временно отключите командой setenforce 0, для проверки)
Дадим права на каталоги
1 2 3 4 5 |
chown rancid:rancid /var/rancid/.cloginrc chmod 440 /var/rancid/.cloginrc chmod 751 /var/rancid |
На этом все. Перехожу на CentOS 7