首页 > 代码库 > 网络设备配置管理与版本控制

网络设备配置管理与版本控制

网络设备配置管理与版本控制

http://netkiller.github.io/journal/network.ios.html

MrNeo Chen (陈景峰)netkiller, BG7NYT


中国广东省深圳市龙华新区民治街道溪山美地
518131
+86 13113668890
+86 755 29812080
<netkiller@msn.com>

版权声明

转载请与作者联系,转载时请务必标明文章原始出处和作者信息及本声明。

技术分享
文档出处:
http://netkiller.github.io
http://netkiller.sourceforge.net

2014-12-26

摘要

2014-12-24

我的系列文档
Netkiller Architect 手札 Netkiller Developer 手札 Netkiller PHP 手札 Netkiller Python 手札 Netkiller Testing 手札
Netkiller Cryptography 手札 Netkiller Linux 手札 Netkiller Debian 手札 Netkiller CentOS 手札 Netkiller FreeBSD 手札
Netkiller Shell 手札 Netkiller Security 手札 Netkiller Web 手札 Netkiller Monitoring 手札 Netkiller Storage 手札
Netkiller Mail 手札 Netkiller Docbook 手札 Netkiller Version 手札 Netkiller Database 手札 Netkiller PostgreSQL 手札
Netkiller MySQL 手札 Netkiller NoSQL 手札 Netkiller LDAP 手札 Netkiller Network 手札 Netkiller Cisco IOS 手札
Netkiller H3C 手札 Netkiller Multimedia 手札 Netkiller Perl 手札 Netkiller Amateur Radio 手札 Netkiller DevOps 手札

目录
  • 1. 背景
  • 2. 怎样实现网络设备配置管理
  • 3. 总结

1. 背景

我们经常会频繁的配置网络设备,但有时候做了某些操作出现了异常,我们不清楚问题出在哪里,还原配置也不起作用,甚至你根本记得你改动了什么。

另外我们希望能够监控网络设备的配置变化,一个公司可能有很多网络工程师,他们都有权限操作路由交换或防火墙设备,我们要知道网络设备配置什么时候发生了变化,并通知其他几位同事。同时我们要对修改操作记录归档,方便日后查阅。

2. 怎样实现网络设备配置管理

我们每隔一段时间便将网络设备的配置导出存档,然后通过版本控制工具进行版本化管理,远离非常简单。

有了版本控制我们可能很方便的回撤操作。下面我来详细讲解怎样安装于配置该软件

$ git clone https://github.com/netkiller/logging.git
$ cd logging
$ python3 setup.py sdist
$ python3 setup.py install

$ sudo apt-get install expect
$ sudo chmod +x /usr/local/libexec/*

配置网络设备地址

打开 /usr/local/bin/cisco 文件,修改BACKUP_DIR,改为你的备份目录

$ vim /usr/local/bin/cisco

CFGFILE=$BASEDIR/etc/cisco.conf
BACKUP_DIR=~/.backup

$ cat /usr/local/etc/cisco.conf 
192.168.50.1 mgmt EBopQ1X2vMkrl M8YJxvDiddG6QK
192.168.50.2 mgmt EBopQ1X2vMkrl M8YJxvDiddG6QK
192.168.50.3 mgmt EBopQ1X2vMkrl M8YJxvDiddG6QK
192.168.50.4 mgmt EBopQ1X2vMkrl M8YJxvDiddG6QK

$ sudo chmod 600 /usr/local/etc/cisco.conf

编辑/usr/local/etc/cisco.conf文件,格式如下:

host | username | password | enable password

初始化版本仓库

# Initialized empty Git repository in local.
$ cisco init

# Initialized empty Git repository from remote.
$ cisco init http://xxx.xxx.xxx.xxx/project/xxxx.git
$ cisco init user@host:/project/xxxx.git

启动,停止等操作

$ cisco
Usage: /usr/local/bin/cisco {init|start|stop|status|restart}

# cisco start
# cisco stop

查看网络设备配置变化

查看当前与上一个版本的变化

$ cd your_backup_dir
$ git diff HEAD HEAD~ route.running-config

查看当前与前面第三个版本的变化

$ cd your_backup_dir
$ git diff HEAD HEAD~3 route.running-config

3. 总结

该程序主要是备份网络设备的配置文件,当然也能起到监控做用,但备份间隔时间需要根据你的情况设定,如果太频繁也不太好,间隔太长可能起不到很好的监控作用。

关于监控与报警,你可以通过git diff 命令对比与上次配置文件的变化,通常是没有变化的,一旦发生变化便通过电子邮件与短信发出警报。至于怎么实现,不再本文讨论范围,有兴趣可以参考笔者的其他技术手札。

关于版本控制软件更多细节,延伸阅读《Netkiller Version 手札》

网络设备配置管理与版本控制