Oxidized是一個使用 Ruby 編寫的開源網(wǎng)絡(luò)設(shè)備配置備份工具,是 RANCID(思科的一個工具) 的替代品,輕量級且可擴展的 Oxidized 支持 130 多種操作系統(tǒng)。
體驗一下它的功能以及各種實現(xiàn),看如何能與現(xiàn)有的系統(tǒng)進行整合,或者用 Python 造個簡單的輪子。
結(jié)論:
-
整體使用感受:作為一個專門的配置備份軟件,可以說把一個功能做到了比較高的水平!
-
亮點功能:可以支持監(jiān)聽設(shè)備上報的 syslog 日志中的配置改動來觸發(fā)配置文件備份,對我來說是一個新的思路。
目前支持 ios、junos、eos、nsos、aruba,后面有時間可以驗證一次。
- 很多實現(xiàn)細節(jié)沒有體驗,大致過了一遍文檔
安裝過程
拉取鏡像
dockerpulloxidized/oxidized
配置文件相關(guān)
創(chuàng)建目錄,用來存放配置文件、備份的配置、運行日志、主機清單文件等等
mkdir/etc/oxidized
運行一次容器,讓程序自動生成初始配置文件,--rm
參數(shù)為容器退出后自動刪除該容器:
dockerrun--rm-v/etc/oxidized:/root/.config/oxidized-p8888:8888/tcp-toxidized/oxidized:latestoxidized
回顯信息為:edit ~/.config/oxidized/config
,說明已經(jīng)生成了默認的配置文件。
編輯配置文件,oxidized 的配置文件是 yaml 格式的,詳細的配置項Configuration,提供了多種靈活的數(shù)據(jù)繼承的方法,即可以為每臺、每組、每種設(shè)備等等進行不同的配置。
---
username:oxidized#值隨意,以數(shù)據(jù)庫為準(zhǔn)
password:S3cr3tx#值隨意,以數(shù)據(jù)庫為準(zhǔn)
model:junos#值隨意,以數(shù)據(jù)庫為準(zhǔn)
interval:3600#配置備份的間隔時間
log:~/.config/oxidized/log#日志文件
debug:false
threads:30#線程
timeout:20#超時時間
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方式存儲
git:
user:Oxidized
email:oxidized@example.com
repo:"~/.config/oxidized/oxidized.git"
source:
default:csv
csv:
file:~/.config/oxidized/router.db#CSV格式的主機數(shù)據(jù)庫
delimiter:!ruby/regexp/:/
map:
name:0#CSV里面的值映射關(guān)系
ip:1
model:2
username:3
password:4
group:6
vars_map:
enable:5
groups:#為每個組進行單獨的配置
mikrotik:
username:admin
password:blank
ubiquiti:
username:ubnt
password:ubnt
model_map:#為每種設(shè)備類型進行單獨的配置
cisco:ios
username:admin
password:password
juniper:junos
ironware:
username:admin
password:password
vars:
enable:enablepassword
router.db
主機數(shù)據(jù)庫,默認是 CSV 格式,也支持通過 SQL 、SQLite、HTTP 等方式來拉取,最終的數(shù)據(jù)結(jié)構(gòu)根據(jù)不同的來源進行處理,然后重點是主機清單里面的數(shù)據(jù),要通過 map
和 var_map
建立對應(yīng)的映射關(guān)系,這里是配置文件可以靈活制定的關(guān)鍵。
以 CSV 格式為例,應(yīng)當(dāng)是以下格式,默認是以 :
為分隔符,最終結(jié)果是個列表,然后映射值時根據(jù)下標(biāo):
r1comwareNetDevops@01group1
r2comwareNetDevops@01group2
r3comwareNetDevops@01group2
運行
運行容器,將本地數(shù)據(jù)卷映射到容器內(nèi)的指定目錄,容器內(nèi)部默認監(jiān)聽 8888 端口:
dockerrun-td
--nameoxidized_1
--restart=always
-v/etc/oxidized:/root/.config/oxidized
-p8888:8888/tcp
oxidized/oxidized:latest
oxidized
程序輸出
配置輸出:
- 以文件的方式存儲
需要手動創(chuàng)建父目錄 configs
,每個設(shè)備一個配置文件,只保留最新的配置,不會保存歷史配置。
默認為每個組建立一個文件夾。
每次會在原文件的基礎(chǔ)上更新文件,不會保存歷史。
-
以 git 的方式存儲,默認為每個組創(chuàng)建一個 git 倉庫,可以通過
single_repo: true
來配置使用同一個倉庫,此時每個組為一個文件夾。
oxidized 默認創(chuàng)建的的是bare repo,相當(dāng)于一個私有的 git 倉庫,里面沒有 git 的工作目錄,只有版本文件,每次備份配置后會進行一次提交;本地的私有倉庫,可以通過克隆來查看具體的備份文件。
例如,我這里有一個 default.git 的目錄,是上面 router.db 里面幾臺主機的配置備份信息:

如果要查看具體的文件,可以克隆這個倉庫:
gitclone/etc/oxidized/default.gitmy_config

如果要把文件提交到遠程倉庫,可以在配置文件中添加 hooks 來實現(xiàn),例如:
hooks:
push_to_remote:
type:githubrepo
events:[post_store]#發(fā)生改變時觸發(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
上面的配置會在備份的配置發(fā)生改變時,把三個本地倉庫分別推送到遠程倉庫,遠端倉庫使用密鑰認證。
注意事項
-
修改配置文件需要重啟 docker 的時候,不會自動刪除 pid 文件,會導(dǎo)致無法啟動,需要手動刪除解決。
rm-rf/etc/oxidized/pid&&dockerrestartoxidized_1
前端界面展示
首頁:

查看配置:

基于 git 方式時,查看版本:

查看版本差異:

審核編輯 :李倩
-
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
7103瀏覽量
125034 -
網(wǎng)絡(luò)設(shè)備
+關(guān)注
關(guān)注
0文章
325瀏覽量
30339 -
python
+關(guān)注
關(guān)注
56文章
4825瀏覽量
86266
原文標(biāo)題:這個網(wǎng)絡(luò)設(shè)備配置備份工具絕了,開源、輕量、擴展,支持130多種操作系統(tǒng)!
文章出處:【微信號:網(wǎng)絡(luò)技術(shù)干貨圈,微信公眾號:網(wǎng)絡(luò)技術(shù)干貨圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄

工業(yè)網(wǎng)絡(luò)設(shè)備挑選不用愁,帶你快速選型
基于RV1126開發(fā)板網(wǎng)絡(luò)配置方法

云服務(wù)器計算池的運維團隊需要掌握的網(wǎng)絡(luò)工具
如何配置 MPLS 網(wǎng)絡(luò)
MPLS網(wǎng)絡(luò)性能優(yōu)化技巧
如何配置ptp網(wǎng)絡(luò)設(shè)備
介紹6款開源免費的網(wǎng)絡(luò)監(jiān)控工具

使用Python腳本備份華為交換機的配置信息

評論