Rancid的全称是Really Awesome New Cisco ConfIg Differ,顾名思义,该软件的初衷是为了管理cisco设备,然而由于它非常实用,目前已经被扩展到支持多种网络设备,诸如常见的dell,hp,juniper,foundry,redback等,当然,国内常见的h3c也不在话下。

rancid的工作原理

安装

$ sudo aptitude install rancid-core rancid rancid-utils

Rancid配置

$ sudo vim /etc/rancid/rancid.conf
-------------8<----------------
CVSROOT=$BASEDIR/SVN; export CVSROOT
RCSSYS=svn; export RCSSYS
LIST_OF_GROUPS=”access dist core”
------------->8----------------
  1. rancid支持CVS和SVN这两种版本管理工具,本文选择了SVN,因为CVS太古老了。

  2. 根据cisco的定义,一个大型的网络规划应该分成三层,分别是access、distribution和core,因此我们也创建三个组:access、dist、core

配置设备

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

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

$ sudo 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

$ sudo 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
$ sudo chmod +x h3crancid h3clogin

H3C设备配置

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

local-user ranciduser authorization-attribute level 1

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

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

h3clogin -x /path/to/commands.file <device-ip>

最后测试一下

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

配置变更

软件配置变更

  • 版本管理工具

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

  • 安装svn

    $ sudo aptitude install svn
  • 整合svn

    cd /var/lib/rancid/
    $ sudo 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/
    
    $ sudo chown -R rancid:rancid /var/lib/rancid/
    $ sudo chmod 0600 /var/lib/rancid/.cloginrc
    $ sudo -u rancid -H /usr/lib/rancid/bin/rancid-run
    
    $ sudo svn mkdir access/configs
    $ sudo svn mkdir dist/configs
    $ sudo svn mkdir core/configs
    $ sudo svn add access/*
    $ sudo svn add dist/*
    $ sudo svn add core/*
    $ sudo svn commit -m "added files" access/
    $ sudo svn commit -m "added files" dist/
    $ sudo svn commit -m "added files" core/

配置变更提醒

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

exim4的安装和配置

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

/etc/aliases
$ sudo 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-<group-name>,当有错误信息时,邮件将发送给rancid-admin-<group-name>。

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