背景
網絡運維管理的網絡設備在量級較小的時候,傳統的網絡配置備份通常是人肉登陸手動備份,隨著管理網絡設備越來越多,進階的方式通常會使用腳本自動抓取配置,通過 FTP 等把配置上傳到某處存儲,但如果可以有一個備份系統不需要你使用腳本、不限設備廠商可以支持國內外主流的網絡設備、同時有web介面,能夠查看配置差異對比,同時可以同時同步配置到內部 gitlab。而我們今天要聊的就是這樣的一個系統, 而且安裝配置簡單,最重要開源免費 真正的大殺器 不負」最好用」之名。
官網連結:https://github.com/ytti/oxidized
oxidized搭建
環境準備
系統
nginx
oxidized
Centos 7
1.18.0
0.28.0
卸載系統自帶 ruby,因為系統自帶的版本低於需要的版本要求
[root@host ~]# sudo yum remove ruby ruby-devel
安裝工具包
[root@host ~]# sudo yum groupinstall "Development Tools"
安裝 Ruby
[root@host ~]# wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.5.tar.gz
[root@host ~]# tar -zxvf ruby-2.5.5.tar.gz
[root@host ~]# cd ruby-2.5.5
[root@host ~]# ./configure
[root@host ~]# make
[root@host ~]# sudo make install
安裝所有依賴環境
[root@host ~]# yum install make cmake which sqlite-devel openssl-devel libssh2-devel ruby gcc ruby-devel libicu-devel gcc-c++
安裝 Oxidized
[root@host ~]# gem install oxidized
[root@host ~]# gem install oxidized-script oxidized-web
安裝完成後首次運行 Oxidized,會提示去編輯配置文件
[root@host ~]# oxidized
edit ~/.config/oxidized/config
組件說明
config 文件: 就用來存放配置文件
Sources 欄位: 指出要備份設備的存放方式
Outputs 欄位: 指出備份文件存放的方式
model 欄位:指出該設備的廠商所用的os名稱, 核心功能就是靠這個實現的。
router.db文件 可以理解成 存放被管理主機的地方
編輯配置文件
[root@host ~]# vi ~/.config/oxidized/config
username: username //用戶名 router.db中讀取.
password: password //密碼 router.db中讀取.
model: junos //模型 router.db中讀取.
interval: 86400 //備份周期(秒)
use_syslog: false //日誌開關
debug: false //診斷開關
threads: 100 //線程
timeout: 20 //超時
retries: 3 //重試次數
prompt: !ruby/regexp /^([\w.@-]+[#>]\s?)$/
rest: 10.7.212.16:8888
next_adds_job: false
vars: {}
groups: {}
models: {}
pid: "/root/.config/oxidized/pid"
input: //連接設備模式
default: ssh, telnet
debug: false
ssh:
secure: false
default: git //輸出到git,用來配置對比使用
git:
user: Oxidized
email: o@example.com
repo: "/root/.config/oxidized/git-repos/default.git"
source:
default: csv
csv:
file: "/root/.config/oxidized/router.db" //儲存設備信息IP、Username、Password 等
delimiter: !ruby/regexp /:/
map: //連接順序格式
name: 0
model: 1
ip: 2
group: 3
username: 4
password: 5
vars_map:
enable: 6
comware_cmdline: 7
gpg: false
model_map:
juniper: junos
cisco: ios
huawei: vrp
編輯完配置文件後,在相同路徑下創建一個 router.db文件,用來存儲主機基本信息並被 config文件調用vi ~/.config/oxidized/router.db
test:vrp:172.16.0.1:test:test:test
再次運行 Oxidized,測試備份設備配置成功
[root@host ~]# oxidized
I, [2020-07-28T11:06:20.592961 #14850] INFO -- : Oxidized starting, running as pid 14850
I, [2020-07-28T11:06:20.593455 #14850] INFO -- : lib/oxidized/nodes.rb: Loading nodes
I, [2020-07-28T11:06:20.691863 #14850] INFO -- : lib/oxidized/nodes.rb: Loaded 2 nodes
Puma starting in single mode...
* Version 3.11.4 (ruby 2.5.5-p157), codename: Love Song
* Min threads: 0, max threads: 16
* Environment: development
* Listening on tcp://10.7.212.16:8888
Use Ctrl-C to stop
I, [2020-07-28T11:06:39.980781 #14850] INFO -- : Configuration updated for test/test
驗證,打開 WEB 頁面 ,埠 http://IP:8888
配置對比演示
Oxidized Web 參數介紹
last status: 綠色(備份正常), 藍色(正在備份), 紅色(備份失敗)
last update: 上一次備份的時間
action: 點擊第一個圖標就能看到設備備份文件內容,第二個圖標為配置文件比對,第三個圖標為手動強製備份.
安裝 nginx 服務,默認 WEB 不提供登錄認證,安裝 nginx 進行登錄認證
[root@host ~]# sudo yum install nginx
安裝 httpd 服務
[root@host ~]# sudo yum install httpd-tools
創建一個文件夾用於存儲用戶信息
[root@host ~]# sudo mkdir /usr/local/nginx/
[root@host ~]# sudo chown -R 777 /usr/local/nginx/
創建 web 登錄認證用戶
[root@host ~]# htpasswd -c /usr/local/nginx/.htpasswd oxidized
New password:
Re-type new password:
Adding password for user oxidized
修改 nginx配置文件如下:
[root@host ~]# vi /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name 10.7.212.16;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
auth_basic "Welcome to Oxidized WEB Login";
auth_basic_user_file /usr/local/nginx/.htpasswd;
proxy_pass http://10.7.212.16:8888;
}
賦予nginx 配置文件權限,並啟動 nginx
[root@host ~]# sudo chown -R 777 /usr/local/nginx/
[root@host ~]# systemctl enable nginx && systemctl start nginx
登錄 web 介面提示輸入用戶名密碼,用之前創建的用戶認證成功後跳轉到 Oxidized
最後把 Oxidized nohub 設置為後台運行就行啦!
[root@host ~]# nohup oxidized >> /var/log/oxidized.log 2>&1 &
踩過的坑
華為防火牆HRP備份失敗
$ 進入模塊目錄
[root@host ~]# cd /opt/rh/rh-ruby25/root/usr/local/share/gems/gems/oxidized-0.28.0/lib/oxidized/model
$ 修改 vrp.rb 配置文件
[root@host ~]# vi vrp.rb
$ 修改如下:
prompt /^(HRP_[MS])?(<[\w.-]+>)$/
nginx 安裝失敗
$ 新建 vim nginx.repo 文件
[root@host ~]# vi /etc/yum.repos.d/
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
然後再 yum -y install nginx 就可以正常安裝啦!
Done!
註:本文僅是開源技術分享,沒有任何商業目的,如有版權問題請聯繫小編刪除處理,我們並表示歉意
END