網絡設備配置管理與版本控制

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

Mr. Neo Chen (陳景峯), netkiller, BG7NYT


中國廣東省深圳市龍華新區民治街道溪山美地
518131
+86 13113668890


版權聲明

轉載請與作者聯繫,轉載時請務必標明文章原始出處和作者信息及本聲明。

文檔出處:
http://netkiller.github.io
http://netkiller.sourceforge.net

微信掃瞄二維碼進入 Netkiller 微信訂閲號

QQ群:128659835 請註明“讀者”

2017-06-16

摘要

2014-12-25


目錄

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 手札》