Oxidized是一個使用 Ruby 編寫的開源網絡設備配置備份工具,是 RANCID(思科的一個工具) 的替代品,輕量級且可擴展的 Oxidized 支持 130 多種操作系統。
體驗一下它的功能以及各種實現,看如何能與現有的系統進行整合,或者用 Python 造個簡單的輪子。
結論:
-
整體使用感受:作為一個專門的配置備份軟件,可以說把一個功能做到了比較高的水平!
-
亮點功能:可以支持監聽設備上報的 syslog 日志中的配置改動來觸發配置文件備份,對我來說是一個新的思路。
目前支持 ios、junos、eos、nsos、aruba,后面有時間可以驗證一次。
- 很多實現細節沒有體驗,大致過了一遍文檔
安裝過程
拉取鏡像
dockerpulloxidized/oxidized
配置文件相關
創建目錄,用來存放配置文件、備份的配置、運行日志、主機清單文件等等
mkdir/etc/oxidized
運行一次容器,讓程序自動生成初始配置文件,--rm
參數為容器退出后自動刪除該容器:
dockerrun--rm-v/etc/oxidized:/root/.config/oxidized-p8888:8888/tcp-toxidized/oxidized:latestoxidized
回顯信息為:edit ~/.config/oxidized/config
,說明已經生成了默認的配置文件。
編輯配置文件,oxidized 的配置文件是 yaml 格式的,詳細的配置項Configuration,提供了多種靈活的數據繼承的方法,即可以為每臺、每組、每種設備等等進行不同的配置。
---
username:oxidized#值隨意,以數據庫為準
password:S3cr3tx#值隨意,以數據庫為準
model:junos#值隨意,以數據庫為準
interval:3600#配置備份的間隔時間
log:~/.config/oxidized/log#日志文件
debug:false
threads:30#線程
timeout:20#超時時間
retries:3#失敗重試次數
prompt:!ruby/regexp/^([w.@-]+[#>]s?)$/#登錄設備后的提示符判斷
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格式的主機數據庫
delimiter:!ruby/regexp/:/
map:
name:0#CSV里面的值映射關系
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:#為每種設備類型進行單獨的配置
cisco:ios
username:admin
password:password
juniper:junos
ironware:
username:admin
password:password
vars:
enable:enablepassword
router.db
主機數據庫,默認是 CSV 格式,也支持通過 SQL 、SQLite、HTTP 等方式來拉取,最終的數據結構根據不同的來源進行處理,然后重點是主機清單里面的數據,要通過 map
和 var_map
建立對應的映射關系,這里是配置文件可以靈活制定的關鍵。
以 CSV 格式為例,應當是以下格式,默認是以 :
為分隔符,最終結果是個列表,然后映射值時根據下標:
r1comwareNetDevops@01group1
r2comwareNetDevops@01group2
r3comwareNetDevops@01group2
運行
運行容器,將本地數據卷映射到容器內的指定目錄,容器內部默認監聽 8888 端口:
dockerrun-td
--nameoxidized_1
--restart=always
-v/etc/oxidized:/root/.config/oxidized
-p8888:8888/tcp
oxidized/oxidized:latest
oxidized
程序輸出
配置輸出:
- 以文件的方式存儲
需要手動創建父目錄 configs
,每個設備一個配置文件,只保留最新的配置,不會保存歷史配置。
默認為每個組建立一個文件夾。
每次會在原文件的基礎上更新文件,不會保存歷史。
-
以 git 的方式存儲,默認為每個組創建一個 git 倉庫,可以通過
single_repo: true
來配置使用同一個倉庫,此時每個組為一個文件夾。
oxidized 默認創建的的是bare repo,相當于一個私有的 git 倉庫,里面沒有 git 的工作目錄,只有版本文件,每次備份配置后會進行一次提交;本地的私有倉庫,可以通過克隆來查看具體的備份文件。
例如,我這里有一個 default.git 的目錄,是上面 router.db 里面幾臺主機的配置備份信息:
如果要查看具體的文件,可以克隆這個倉庫:
gitclone/etc/oxidized/default.gitmy_config
如果要把文件提交到遠程倉庫,可以在配置文件中添加 hooks 來實現,例如:
hooks:
push_to_remote:
type:githubrepo
events:[post_store]#發生改變時觸發操作
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
上面的配置會在備份的配置發生改變時,把三個本地倉庫分別推送到遠程倉庫,遠端倉庫使用密鑰認證。
注意事項
-
修改配置文件需要重啟 docker 的時候,不會自動刪除 pid 文件,會導致無法啟動,需要手動刪除解決。
rm-rf/etc/oxidized/pid&&dockerrestartoxidized_1
前端界面展示
首頁:
查看配置:
基于 git 方式時,查看版本:
查看版本差異:
審核編輯 :李倩
-
操作系統
+關注
關注
37文章
6847瀏覽量
123420 -
網絡設備
+關注
關注
0文章
316瀏覽量
29679 -
python
+關注
關注
56文章
4798瀏覽量
84801
原文標題:這個網絡設備配置備份工具絕了,開源、輕量、擴展,支持130多種操作系統!
文章出處:【微信號:網絡技術干貨圈,微信公眾號:網絡技術干貨圈】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論