网络设备管理 - rancid

Rancid的全称是Really Awesome New Cisco ConfIg Differ,顾名思义,该软件的初衷是为了管理cisco设备,然而由于它非常实用,目前已经被扩展到支持多达xx种网络设备,诸如常见的dell,hp,juniper,foundry,redback等,当然,国内常见的h3c也不在话下。
It‘s not that the name is not being recognized, it’s that the scripts it's running have errors in the first line which produce "

“No such file or directory”
Lookup list of groups

For each device in each list of groups
• Connect to the equipment (telnet, ssh, …)
• Run ”show” commands – config, inventory, …
• Collect, filter/format data
• Retrieve the resulting config files
• CVS check-in the changes
• Generate a diff from the previous version
• E-mail the diff to a mail address (individual or group)

rancid

rancid的工作原理

安装

# aptitude install rancid-core rancid rancid-utils

Rancid配置

/etc/rancid/rancid.conf

CVSROOT=$BASEDIR/SVN; export CVSROOT
RCSSYS=svn; export RCSSYS
LIST_OF_GROUPS=”access dist core”
  1. rancid支持CVS和SVN这两种版本管理工具,本文选择了SVN,因为CVS太古老了。
  2. 根据cisco的定义,一个大型的网络规划应该分成三层,分别是access、distribution和core,因此我们也创建三个组:access、dist、core

配置设备

cd /var/lib/rancid/
mkdir access
mkdir dist
mkdir core
touch access/router.db
touch dist/router.db
touch core/router.db

接着往router.db里面填内容:

# vim access/router.db
10.0.0.1:h3c:up:sw_access_1f_A
10.0.0.2:h3c:up:sw_access_1f_B
10.0.0.3:h3c:up:sw_access_1f_C
10.0.0.4:h3c:up:sw_access_1f_D
...

依次创建dist/router.db和core/router.db

# vim .cloginrc
add user * <username>
add password * <password>
add method * telnet

H3C脚本

H3C并不在rancid的官方支持之列,不过好在有热心的网友Jethro Binks制作了h3c的脚本

H3C的OS叫Comware,有3和5这两个系列,常见的S3100,S3600,S5600,S5800等均能正常使用。以下是经过测试的型号列表:

  1. H3C S3100 (Comware 3)
  2. H3C S5600 (Comware 3)
  3. H3C S7506 (Comware 5)
  4. H3C S7906E (Comware 5)
  5. H3C S5820X (Comware 5)
  6. H3C S5800 (Comware 5)
  7. H3C S3610 (Comware 5)
  8. H3C MSR30-60 (Comware 5)

Jethro Binks的脚本并不适合于Debian,需要做一点小修改:

h3clogin:

#! /usr/local/bin/expect --

改成

#! /usr/bin/expect --

h3crancid:

#! /usr/bin/perl5

改成

#! /usr/bin/perl

接着将它们拷贝到/usr/lib/rancid/bin中,同时赋予+x的属性。

# cp h3clogin h3crancid /usr/lib/rancid/bin
# chmod +x h3crancid h3clogin

H3C设备配置

rancid的脚本将使用perl+expect来登录H3C设备,并执行一些display命令来获取设备信息,虽然然而所以安全性需要着重考虑,直接给完整的特权账号肯定不合适,最好创建一个单独的ranciduser,并且仅分配level1权限:

local-user ranciduser
authorization-attribute level 1

看到这,有些读者不禁倒吸一口凉气:糟糕,手头上管理着几十台设备,难不成我要逐台登录和创建几十个相同的帐号?别急,我们完全可以利用clogin/h3clogin来自动完成这个任务。

# vim create.rancid.account
sys
local-user rancid
authorization-attribute level 1
quit
save

h3clogin -x /path/to/commands.file

最后测试一下

# sudo -u rancid -H /usr/lib/rancid/h3clogin <H3C-device-ip> FIXME

配置变更

硬件配置变更

软件配置变更

版本管理工具

rancid利用版本管理工具对配置变更进行管理,这是一个聪明而省力的做法,unix哲学就是帅。rancid支持CVS和SVN这两个版本管理工具,本文选择的是SVN,因为CVS太古老了。

安装svn

# aptitude install svn

整合svn

cd /var/lib/rancid/
svnadmin create configs
svn mkdir file:///var/lib/rancid/configs/access -m “created folder”
svn mkdir file:///var/lib/rancid/configs/dist -m “created folder”
svn mkdir file:///var/lib/rancid/configs/core -m “created folder”
svn co file:///var/lib/rancid/configs/access ./access/
svn co file:///var/lib/rancid/configs/dist ./dist/
svn co file:///var/lib/rancid/configs/core ./core/

chown -R rancid:rancid /var/lib/rancid/
chmod 0600 /var/lib/rancid/.cloginrc

sudo -u rancid -H /usr/lib/rancid/bin/rancid-run

svn mkdir access/configs
svn mkdir dist/configs
svn mkdir core/configs
svn add access/
svn add dist/

svn add core/*
svn commit -m “added files” access/
svn commit -m “added files” dist/
svn commit -m “added files” core/

配置变更提醒

当rancid检测到变更时,control_rancid组件利用sendmail将变更信息通过邮件发送给管理员。对于debian来说,我们将使用默认的MTA exim4来完成这项工作。

exim4的安装和配置

详见《如何利用exim4通过gmail发送邮件

/etc/aliases

# vim /etc/aliases
...
rancid-<group-name> : mail-address@domain.name
rancid-adimin-<group-name> : mail-address@domain.name
...
# newaliases
# /etc/init.d/exim4 restart

当配置变更时,邮件将发送给rancid-,当有错误信息时,邮件将发送给rancid-admin-

至此完成了配置变更的邮件提醒功能。

查看变更历史记录

viewvc安装

viewvc配置