网络设备配置管理与版本控制
摘要
2014-12-25
我的系列文档
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 Project 手札 | 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 手札 |
您可以使用iBook阅读当前文档
目录
- 1. 背景
- 2. 怎样实现网络设备配置管理
- 3. 总结
1. 背景
我们经常会频繁的配置网络设备,但有时候做了某些操作出现了异常,我们不清楚问题出在哪里,还原配置也不起作用,甚至你根本记得你改动了什么。
另外我们希望能够监控网络设备的配置变化,一个公司可能有很多网络工程师,他们都有权限操作路由交换或防火墙设备,我们要知道网络设备配置什么时候发生了变化,并通知其他几位同事。同时我们要对修改操作记录归档,方便日后查阅。
2. 怎样实现网络设备配置管理
我们每隔一段时间便将网络设备的配置导出存档,然后通过版本控制工具进行版本化管理,远离非常简单。
有了版本控制我们可能很方便的回撤操作。下面我来详细讲解怎样安装于配置该软件
代码语言:javascript复制$ 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,改为你的备份目录
代码语言:javascript复制$ 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文件,格式如下:
代码语言:javascript复制host | username | password | enable password
初始化版本仓库
代码语言:javascript复制# 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
启动,停止等操作
代码语言:javascript复制$ cisco
Usage: /usr/local/bin/cisco {init|start|stop|status|restart}
# cisco start
# cisco stop
查看网络设备配置变化
查看当前与上一个版本的变化
代码语言:javascript复制$ cd your_backup_dir
$ git diff HEAD HEAD~ route.running-config
查看当前与前面第三个版本的变化
代码语言:javascript复制$ cd your_backup_dir
$ git diff HEAD HEAD~3 route.running-config
3. 总结
该程序主要是备份网络设备的配置文件,当然也能起到监控做用,但备份间隔时间需要根据你的情况设定,如果太频繁也不太好,间隔太长可能起不到很好的监控作用。
关于监控与报警,你可以通过git diff 命令对比与上次配置文件的变化,通常是没有变化的,一旦发生变化便通过电子邮件与短信发出警报。至于怎么实现,不再本文讨论范围,有兴趣可以参考笔者的其他技术手札。
关于版本控制软件更多细节,延伸阅读《Netkiller Version 手札》