rancid使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rancid使用相关的知识,希望对你有一定的参考价值。

RANCID 是一个配置文件对比工具,它本身像它听起来一样无聊;你一到达公司,就打开一个维护窗口,然后输入用户名,并且抱怨已经停止工作的系统。晚上工作的技术人员正在睡觉,并且他们似乎忘记了把他们所做的事情记录进文档(坑队友)。幸好,RANCID 能帮助我们,RANCID 除了可以向你展现昨晚的变更,还可以展现自从它正式使用后的所有变更。因此如果你已经使用 RANCID 三年以上,它可以向你展现从那时候起到现在的所有硬件的所有变更。把你所有的配置文件存储进 RANCID 服务器作为一个备份。它不但可以帮助你很好的收集硬件的信息,你还可以通过发送一个命令到几个节点来使用 RANCID 从你的硬件上获取指定的信息,比如“show ip route”” 或者 “show crypto pki certificates”。更进一步,你可以使用它变更你的配置信息,因此如果你需要改变所有防火墙或是路由器上的访问列表,你可以使用 RANCID 来做到这些事情。

虽然 RANCID 不是很完美,但是真的是非常容易使用。如果你没有其他类似的工具,RANCID 将是一款非常适合你的工具。

安装

这里有针对不同发行版的安装包。
你可以在 CentOS 5.11系统上运行如下命令安装 RANCID:

sudo rpm -Uvh --replacepkgs http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpmsudo yum install rancid cvs

在 Ubuntu 12.04 LTS 或 Debian 7.4 上你可以使用 apt 命令来安装:

sudo apt-get install rancid

你会注意到,如果你安装 Debian 或 Ubuntu 包,你将被展现一个 文本信息,告诉你这是个早期版本包(开发阶段),

技术分享

通常,当你使用一个发行版的包的时候,你不会访问最新的版本。如果你需要或者想要安装最新版本,你可以通过源码安装的方式代替。如果你选择 route,你依然可以使用本教程来帮助你设置 RANCID。

Windows 用户如何做?

RANCID 不能原生的运行在 Windows 上。但是你或许可以通过 Cygwin 来运行它。我依然建议你安装在一台 Linux 服务器上。尽管如此,如果你是一个 Windows 忠实用户(个人爱好,或是公司环境),我建议你使用 CatTools 代替。CatTools 是一个和 RANCID 在许多地方都类似的工具,你大部分想做的事情在两个产品上都有。

测试网络

为了测试的目的,假设你已经在一个拥有一个总部和四个分支机构的网络中安装了 RANCID。在总部,有一个路由器,一个 汇聚交换机,三个接入交换机和6个独立的无线接入节点。在每个分支机构,一个路由器,一个接入交换机和两个无线接入节点。你想使用 RANCID 处理所有的硬件。

技术分享

因此在我们的网络中,我们有以下硬件设备:

Stockholm:sth-rtr-1, sth-dsw-1,sth-asw-1, sth-asw-2, sth-asw-3, sth-ap-1, sth-ap-2, sth-ap-3, sth-ap-4, sth-ap-5 和 sth-ap-6
Boston:bos-rtr-1,bos-asw-1, bos-ap-1 和 bos-ap-2
Amsterdam: ams-rtr-1, ams-asw-1, ams-ap-1 和 ams-ap-2
Paris:par-rtr-1, par-asw-1, par-ap-1 和 par-ap-2
London:lon-rtr-1, lon-asw-1, lon-ap-1 和 lon-ap-2

建立分组

安装完成 RANCID 的第一件事就是你需要配置你将使用到的分组。如果你以前没有使用过 RANCID,怎样设置你的分组可能会比较困难,或是为什么要这样做。最早的方式是仅仅创建一个叫做 “all” 的分组,然后把所有的硬件设备存放在该分组里面。

因此,什么是分组?在这个上下文中,分组就是一组硬件设备的集合,当一个硬件发生了改变,组管理员将收到一封通知邮件。在这个测试网络中,Boston 的技术人员可能并不关心 London 的交换机做的变更。在这样的情况下,你需要为每个分支机构创建独立的分组。另外一个情况就是你可能有一个无线管理员处理所有的无线节点(在这个情况下,还没有说服管理层投资一个无线局域网控制器)。在这里你可能想为每种类型的硬件创建一个分组,比如,一组用于路由器,一组用于交换机,一组用于无线访问点。

另外一个使用分组的原因是除了分离变更通知以外,RANCID 还需要在单独的目录为每一个分组存储该组的硬件配置。因此如果你想使用 Unix 命令或是类似的命令来在你的配置文件中搜索,考虑如何设置你的分组会非常有用。如果你不确定,你可以在最后改变。

分组设置在 /etc/rancid/rancid.conf 文件中,我们根据硬件类型设置分组的示例如下:

# list of rancid groupsLIST_OF_GROUPS="routers switches access-points"

设置邮件别名

RANCID 发送邮件给 rancid-[groupname] 和 rancid-admin-[groupname] 的别名。因此编辑你的 /etc/aliases 文件。

rancid-routers:             [email protected]:       [email protected]:            [email protected]:      [email protected]:       [email protected][email protected]

设置 CVS 

RANCID 默认使用 CVS 做版本管理追踪你硬件的变更。你也可以使用 Subversion。为了准备 CVS 数据库,你需要以 rancid 用户(在安装的时候创建的)运行 rancid-cvs 命令。这个需要在你每次创建一个新组的时候做一次。

sudo -i -u rancid
/var/lib/rancid/bin/rancid-cvs (on Debian and Ubuntu)
/usr/bin/rancid-cvs (on CentOS)

这会在 /var/lib/rancid (Debian and Ubuntu) 和 /var/rancid (CentOS) 下面为每个组创建一个目录。因此路由器目录位于/var/lib/rancid/routers(Debian 或 Ubuntu),如果是使用的 CentOS 那目录就位于 /var/rancid/routers

添加 hosts 到 router.db

router.db 是为每个组指定的,位于分组目录,像下面这样把硬件添加进组。

Routers (/var/lib/rancid/routers/router.db or /var/rancid/routers/router.db):

sth-rtr-1:cisco:upbos-rtr-1:cisco:upams-rtr-1:cisco:uppar-rtr-1:cisco:uplon-rtr-1:cisco:up

Switches /var/lib/rancid/switches/router.db or /var/rancid/switches/router.db:

sth-dsw-1:cisco:upsth-asw-1:cisco:upsth-asw-2:cisco:upsth-asw-3:cisco:upbos-asw-1:cisco:upams-asw-1:cisco:uppar-asw-1:cisco:uplon-asw-1:cisco:up

Access Points:

sth-ap-1:cisco:upsth-ap-2:cisco:upsth-ap-3:cisco:upsth-ap-4:cisco:upsth-ap-5:cisco:upsth-ap-6:cisco:upbos-ap-1:cisco:upbos-ap-2:cisco:upams-ap-1:cisco:upams-ap-2:cisco:uppar-ap-1:cisco:uppar-ap-2:cisco:uplon-ap-1:cisco:uplon-ap-2:cisco:up

配置访问硬件

访问硬件的资格证书是存储在 .cloginrc 文件中,在 rancid 用户 home 目录 /var/lib/rancid (Debian and Ubuntu) 和 /var/rancid (CentOS) 创建该文件。编辑该文件并添加以下行:

add autoenable * 1add method * ssh
add user * rancid
add password * [email protected]

以上配置就是告诉 RANCID 使用 SSH 登陆所有的硬件,所有硬件的登陆用户名是 rancid,密码是 [email protected]。autoenable 行告诉 RANCID, 硬件是被配置为登陆后,指定的 rancid 用户直接在启用模式。
配置 .cloginrc 文件以便 RANCID 发出可用的用户名和密码。或者是根据不同的硬件使用不同的用户名和密码:

add user *-asw-* rancid-switch-user
add password *-asw-* $witchpassw0rd

因为 RANCID 将直接登陆硬件设备,通过使用 Tacacs 命令授权控制 rancid 用户能做什么是一个非常好的主意。因此 RANCID 仅仅被允许运行特定的显示命令。如果你没有一个 Tacacs 服务器,你也可以用 RADIUS 使用 cli-views。

为了能锁定它,你必须改变文件的访问权限:

chmod 600 .cloginrc

测试 Rancid

一旦授权完成,你可以测试它怎样工作的,使用 rancid 用户(sudo -i -u rancid),你可以尝试登陆其中一台硬件,通过使用位于 /var/lib/rancid/bin (Debian and Ubuntu) 和 /usr/libexec/rancid (CentOS) 下的 clogin 命令登陆进思科的硬件设备。你或许想把它们添加进你的 path。当在那个目录的时候,你将注意到其他的 *login 文件。例如 hlogin 用于惠普设备,flogin 用于 Foundry 设备。

clogin sth-asw-2

技术分享

你现在应该登陆进了交换机,然后键入 exit 返回服务器。

调度 RANCID

为了让 RANCID 保持追踪变更,你需要以 rancid 用户启动一个定时的调度任务:

crontab -e

0 * * * * * /usr/bin/rancid-run

这将每小时运行一次调度任务,并且在每次硬件设备有变更的时候通知每组的责任成员。你也可以设置成你喜欢的运行频率,在一些环境中,每晚一次足够了。另外一个选择就是每组有一个独立的调度任务。如果防火墙的规则经常被添加或者删除,但是你的交换机很少变更,你或许想为每个组设置一个不同的调度任务。

查看 RANCID 变更历史

一旦你执行了 rancid-run 或者 被定时任务执行,你的硬件配置将被存储进每个组的配置文件目录。每次 RANCID 发现一个变更,它都将创建一个版本,并且存储自从上次运行后到现在的所有变更。

[[email protected] configs]$ cvs log sth-asw-2RCS file: /var/rancid/CVS/switches/configs/sth-asw-2,v
Working file: sth-asw-2head: 1.3branch:
locks: strict
access list:
symbolic names:
keyword substitution: o
total revisions: 3;     selected revisions: 3description:
----------------------------
revision 1.3date: 2014/04/04 20:01:11;  author: rancid;  state: Exp;  lines: +5 -4updates
----------------------------
revision 1.2date: 2014/04/04 19:01:06;  author: rancid;  state: Exp;  lines: +446 -0updates
----------------------------
revision 1.1date: 2014/04/04 19:00:09;  author: rancid;  state: Exp;
new router
=============================================================================
[[email protected] configs]$

检查你能看到的输出,目前为止,sth-asw-2 有 3 个版本。当文件被创建的时候,版本是 1.1。当 rancid-run 第一次收集配置文件信息的时候,增加了 446 行,版本是 1.2。最新的版本 1.3 增加了 5 行,删除了 4 行。

你可以使用 cvs dif 命令来看两个版本之间的变化。

技术分享

以上图片给我们展示的信息比我们想要的还多。首先我们在文件系统看到了交换机信息的变更,随着配置文件大小的增长,或者是减少,当我们变更配置的时候。在底部我们可以看到实际变更了什么。在这个示例中,自从上次 rancid-run 运行,薪增了行 “snmp-server location Stockholm” 。如果你对文件系统中的某些变更不感兴趣,你可以排除 RANCID 的部分输出。

如果你已经使用 RANCID 很长一段时间,你可以走到你同事的身边,然后在他耳边低语:“我们知道你去年夏季做了什么。”(如果你想成为那样的人的话)

收集特定信息

尽管有能力看对你的网络做的所有变更是一件非常棒的事情,但你也可以使用 clogin 命令来获取更多的特定信息。使用 clogin -c 你可以告诉 RANCID 登陆一个指定的硬件然后运行一个命令,如:

clogin -c "show processes cpu" bos-rtr-1

将登陆 Boston 的路由器,然后执行显示 CPU processes,然后退出路由器。这个可能本身不会帮你节省多少时间,但是或许你想在一定的时间内运行一个命令几次。这时,你可以像这样调度一个命令来收集信息。或者是你可以在你所有的路由器上运行这个命令。

r[email protected]:~/routers/configs$ pwd
/var/lib/rancid/routers/configs
[email protected]:~/routers/configs$ clogin -c "show processes cpu" `ls *rtr*`

这个将列出在配置文件目录下的所有名为 *rtr* 的文件,然后在所有匹配的文件上运行命令 show processes cpu,比如你的路由器。你也可以使用分号分离命令来在每台设备商运行几个命令。

clogin -c "show processes cpu;show memory free" ams-rtr-1

使用 RANCID 变更配置

你可以使用的另外一个参数是 -x。它像 -c 一样工作,但是不同的是,你要键入你想执行的命令,然后把它们存储进一个独立的文件。

clogin -x commands.txt lon-ap-2

以上命令将登陆在 London 办公室的无线接入点,然后执行你输入 commands.txt 文件的所有命令。该文件包含了你键入的任何命令,如果你自己使用 ssh 登陆硬件设备。

假设你正在推出你单位的 dot1x,并想拉出一个认证 ACL 到你的所有硬件,你可以创建一个名为 access-list.txt 的文件,包含以下命令:

conf term
ip access-list extended PREAUTH
 permit udp any any eq bootps
 permit udp any any eq domain
 permit icmp any anyendwrite mem

然后创建一个名为 switches.txt 的文件,包含了你想做变更的交换机的名字。

clogin -x access-list.txt `cat switches.txt`

如果你有上白台交换机,或许仅仅 10 台 RANCID 就能帮你节约很多时间。一个额外的好处是相同的配置被添加进每一台设备。如果你使用 Tacacs 锁定了 rancid 的账号,你可能不能做变更配置。即使你没有用这种方式限制 rancid 账号变更配置,因为 rancid 做了变更,让它们匿名。你可以在你的 home 目录设置一个 .cloginrc 文件,然后以你自己的用户运行 clogin 命令。注意,你的密码是以明文记录在 .cloginrc 文件中的,一个解决方案是 encrypt 你的 home 目录,或者是在你做完变更后删除你的密码。

使用脚本做更多的事情

使用 RANCID 在你的所有硬件上做相同的变更是非常直接的。如果你部署了不同的配置到你的硬件。比如 access-lists 对于每个路由器都不同。如果你学习更多的基础脚本,以及使用 clogin 组合它们的技术,你可以为你的硬件收集到更多的特定信息,或是在几分钟内实现每个路由器的特定变更,而不是手动的几个小时。

定制 RANCID

在这个教程中,我向你展示了 RANCID 的基础知识。但是有非常多的方式可以让你定制 RANCID。一旦你开始了,你可能想深入配置或是 rancid 的程序,为了增加 rancid-run 使用的命令或是删除其他。如果你以前没有使用过 RANCID,在你感到需要做一些改变的时候,那将花费你一些时间。我希望带给你的是,改变默认值可能是非常容易的。

总结

现在你有一个收集你硬件设备信息的系统,它将作为一个备份的角色,并且你也能看到变更。你也应该对 RANCID 有一个基本的了解,知道它能干什么,以及使用它怎样节省你的时间。


本文出自 “7464112” 博客,请务必保留此出处http://7474112.blog.51cto.com/7464112/1791283

以上是关于rancid使用的主要内容,如果未能解决你的问题,请参考以下文章

开源网络管理软件-RANCID新任帮主

微信小程序代码片段

webstorm代码片段的创建

VIM 代码片段插件 ultisnips 使用教程

Android课程---Android Studio使用小技巧:提取方法代码片段

使用 Git 来管理 Xcode 中的代码片段