网络设备管理 - 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”
- rancid支持CVS和SVN这两种版本管理工具,本文选择了SVN,因为CVS太古老了。
- 根据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等均能正常使用。以下是经过测试的型号列表:
- H3C S3100 (Comware 3)
- H3C S5600 (Comware 3)
- H3C S7506 (Comware 5)
- H3C S7906E (Comware 5)
- H3C S5820X (Comware 5)
- H3C S5800 (Comware 5)
- H3C S3610 (Comware 5)
- 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的安装和配置
/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-
至此完成了配置变更的邮件提醒功能。