Oxidized是一個(gè)使用 Ruby 編寫的開(kāi)源網(wǎng)絡(luò)設(shè)備配置備份工具,是 RANCID(思科的一個(gè)工具) 的替代品,輕量級(jí)且可擴(kuò)展的 Oxidized 支持 130 多種操作系統(tǒng)。
體驗(yàn)一下它的功能以及各種實(shí)現(xiàn),看如何能與現(xiàn)有的系統(tǒng)進(jìn)行整合,或者用 Python 造個(gè)簡(jiǎn)單的輪子。
結(jié)論:
-
整體使用感受:作為一個(gè)專門的配置備份軟件,可以說(shuō)把一個(gè)功能做到了比較高的水平!
-
亮點(diǎn)功能:可以支持監(jiān)聽(tīng)設(shè)備上報(bào)的 syslog 日志中的配置改動(dòng)來(lái)觸發(fā)配置文件備份,對(duì)我來(lái)說(shuō)是一個(gè)新的思路。
目前支持 ios、junos、eos、nsos、aruba,后面有時(shí)間可以驗(yàn)證一次。
- 很多實(shí)現(xiàn)細(xì)節(jié)沒(méi)有體驗(yàn),大致過(guò)了一遍文檔
安裝過(guò)程
拉取鏡像
dockerpulloxidized/oxidized
配置文件相關(guān)
創(chuàng)建目錄,用來(lái)存放配置文件、備份的配置、運(yùn)行日志、主機(jī)清單文件等等
mkdir/etc/oxidized
運(yùn)行一次容器,讓程序自動(dòng)生成初始配置文件,--rm
參數(shù)為容器退出后自動(dòng)刪除該容器:
dockerrun--rm-v/etc/oxidized:/root/.config/oxidized-p8888:8888/tcp-toxidized/oxidized:latestoxidized
回顯信息為:edit ~/.config/oxidized/config
,說(shuō)明已經(jīng)生成了默認(rèn)的配置文件。
編輯配置文件,oxidized 的配置文件是 yaml 格式的,詳細(xì)的配置項(xiàng)Configuration,提供了多種靈活的數(shù)據(jù)繼承的方法,即可以為每臺(tái)、每組、每種設(shè)備等等進(jìn)行不同的配置。
---
username:oxidized#值隨意,以數(shù)據(jù)庫(kù)為準(zhǔn)
password:S3cr3tx#值隨意,以數(shù)據(jù)庫(kù)為準(zhǔn)
model:junos#值隨意,以數(shù)據(jù)庫(kù)為準(zhǔn)
interval:3600#配置備份的間隔時(shí)間
log:~/.config/oxidized/log#日志文件
debug:false
threads:30#線程
timeout:20#超時(shí)時(shí)間
retries:3#失敗重試次數(shù)
prompt:!ruby/regexp/^([w.@-]+[#>]s?)$/#登錄設(shè)備后的提示符判斷
crash:
directory:~/.config/oxidized/crashes
hostnames:false
rest:0.0.0.0:8888#前端界面
pid:~/.config/oxidized/oxidized.pid
input:#連接方式
default:ssh,telnet
debug:false
ssh:
secure:false
output:
default:git#以git方式存儲(chǔ)
git:
user:Oxidized
email:oxidized@example.com
repo:"~/.config/oxidized/oxidized.git"
source:
default:csv
csv:
file:~/.config/oxidized/router.db#CSV格式的主機(jī)數(shù)據(jù)庫(kù)
delimiter:!ruby/regexp/:/
map:
name:0#CSV里面的值映射關(guān)系
ip:1
model:2
username:3
password:4
group:6
vars_map:
enable:5
groups:#為每個(gè)組進(jìn)行單獨(dú)的配置
mikrotik:
username:admin
password:blank
ubiquiti:
username:ubnt
password:ubnt
model_map:#為每種設(shè)備類型進(jìn)行單獨(dú)的配置
cisco:ios
username:admin
password:password
juniper:junos
ironware:
username:admin
password:password
vars:
enable:enablepassword
router.db
主機(jī)數(shù)據(jù)庫(kù),默認(rèn)是 CSV 格式,也支持通過(guò) SQL 、SQLite、HTTP 等方式來(lái)拉取,最終的數(shù)據(jù)結(jié)構(gòu)根據(jù)不同的來(lái)源進(jìn)行處理,然后重點(diǎn)是主機(jī)清單里面的數(shù)據(jù),要通過(guò) map
和 var_map
建立對(duì)應(yīng)的映射關(guān)系,這里是配置文件可以靈活制定的關(guān)鍵。
以 CSV 格式為例,應(yīng)當(dāng)是以下格式,默認(rèn)是以 :
為分隔符,最終結(jié)果是個(gè)列表,然后映射值時(shí)根據(jù)下標(biāo):
r1comwareNetDevops@01group1
r2comwareNetDevops@01group2
r3comwareNetDevops@01group2
運(yùn)行
運(yùn)行容器,將本地?cái)?shù)據(jù)卷映射到容器內(nèi)的指定目錄,容器內(nèi)部默認(rèn)監(jiān)聽(tīng) 8888 端口:
dockerrun-td
--nameoxidized_1
--restart=always
-v/etc/oxidized:/root/.config/oxidized
-p8888:8888/tcp
oxidized/oxidized:latest
oxidized
程序輸出
配置輸出:
- 以文件的方式存儲(chǔ)
需要手動(dòng)創(chuàng)建父目錄 configs
,每個(gè)設(shè)備一個(gè)配置文件,只保留最新的配置,不會(huì)保存歷史配置。
默認(rèn)為每個(gè)組建立一個(gè)文件夾。
每次會(huì)在原文件的基礎(chǔ)上更新文件,不會(huì)保存歷史。
-
以 git 的方式存儲(chǔ),默認(rèn)為每個(gè)組創(chuàng)建一個(gè) git 倉(cāng)庫(kù),可以通過(guò)
single_repo: true
來(lái)配置使用同一個(gè)倉(cāng)庫(kù),此時(shí)每個(gè)組為一個(gè)文件夾。
oxidized 默認(rèn)創(chuàng)建的的是bare repo,相當(dāng)于一個(gè)私有的 git 倉(cāng)庫(kù),里面沒(méi)有 git 的工作目錄,只有版本文件,每次備份配置后會(huì)進(jìn)行一次提交;本地的私有倉(cāng)庫(kù),可以通過(guò)克隆來(lái)查看具體的備份文件。
例如,我這里有一個(gè) default.git 的目錄,是上面 router.db 里面幾臺(tái)主機(jī)的配置備份信息:
如果要查看具體的文件,可以克隆這個(gè)倉(cāng)庫(kù):
gitclone/etc/oxidized/default.gitmy_config
如果要把文件提交到遠(yuǎn)程倉(cāng)庫(kù),可以在配置文件中添加 hooks 來(lái)實(shí)現(xiàn),例如:
hooks:
push_to_remote:
type:githubrepo
events:[post_store]#發(fā)生改變時(shí)觸發(fā)操作
remote_repo:
routers:git@git.intranet:oxidized/routers.git
switches:git@git.intranet:oxidized/switches.git
firewalls:git@git.intranet:oxidized/firewalls.git
publickey:/root/.ssh/id_rsa.pub
privatekey:/root/.ssh/id_rsa
上面的配置會(huì)在備份的配置發(fā)生改變時(shí),把三個(gè)本地倉(cāng)庫(kù)分別推送到遠(yuǎn)程倉(cāng)庫(kù),遠(yuǎn)端倉(cāng)庫(kù)使用密鑰認(rèn)證。
注意事項(xiàng)
-
修改配置文件需要重啟 docker 的時(shí)候,不會(huì)自動(dòng)刪除 pid 文件,會(huì)導(dǎo)致無(wú)法啟動(dòng),需要手動(dòng)刪除解決。
rm-rf/etc/oxidized/pid&&dockerrestartoxidized_1
前端界面展示
首頁(yè):
查看配置:
基于 git 方式時(shí),查看版本:
查看版本差異:
審核編輯 :李倩
-
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6862瀏覽量
123528 -
網(wǎng)絡(luò)設(shè)備
+關(guān)注
關(guān)注
0文章
318瀏覽量
29719 -
python
+關(guān)注
關(guān)注
56文章
4802瀏覽量
84890
原文標(biāo)題:這個(gè)網(wǎng)絡(luò)設(shè)備配置備份工具絕了,開(kāi)源、輕量、擴(kuò)展,支持130多種操作系統(tǒng)!
文章出處:【微信號(hào):網(wǎng)絡(luò)技術(shù)干貨圈,微信公眾號(hào):網(wǎng)絡(luò)技術(shù)干貨圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論