Oxidized-20180912-docker 版本的網絡設備備份系統

Problem

Oxidized 非常好用,基本兼容所有網絡設備的備份,但是有一個小小小小的問題,就是在 Linux 環境下,默認安裝的 Ruby 版本問題爲其在離線情況下的安裝增添了很多的麻煩和限制。

於是輕量級的 docker 成了不二的選擇。

(直接安裝版本可以參考如下:)
1. oxidized 最好用的網絡設備備份系統
2. oxidized 最好用的網絡設備備份系統(二)
3. oxidized 最好用的網絡設備備份系統(三)

(官方參考如下:)
1. Oxidized - Docker Hub
2. Oxidized - Github

Solution

意思意思搜一下看看oxidized都有哪些別人已經封裝並上傳的鏡像:

appledeMacBook-Pro-3:oxidized xxx$ docker search oxidized
NAME                        DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
oxidized/oxidized           Oxidized                                        13                   [OK]
alectolytic/oxidized        Oxidized: Alpine Linux based Docker image       1                    [OK]
dbrockus/oxidized           This is a TEST, DO NO USE                       0
b3vis/oxidized              Oxidized config backup software in an Alpi...   0                    [OK]
neteng1/oxidized            Backup Network Devices                          0
darkounet/docker-oxidized                                                   0                    [OK]
edeln/oxidized              oxidized as a framework, using its ssh and...   0
macaty/oxidized             oxidized                                        0                    [OK]
ossobv/oxidized             Edited oxidized (ios.rb) so you can use re...   0
voravitl/oxidized                                                           0
zxandy/oxidized             Oxidized - Configuration backup software h...   0
klinnex/oxidized            Oxidized                                        0                    [OK]
samkdocker/oxidized                                                         0
talibaiiika/oxidized                                                        0
xrlx/graphite-rust          Oxidized graphite stack                         0                    [OK]
sfoster/oxidized            Docker Oxidized auto build                      0                    [OK]

把官方的 oxidized/oxidized 鏡像拉下來:

appledeMacBook-Pro-3:oxidized xxx$ docker pull oxidized/oxidized:latest

嗯,鏡像比較大,要下很久很久….
然後 run 就可以了!(假的,還要配置文件呢!)

appledeMacBook-Pro-3:oxidized xxx$ docker run --rm -v /tmp/oxidized:/root/.config/oxidized  -p 8888:8888/tcp -t oxidized/oxidized:latest oxidized
appledeMacBook-Pro-3:oxidized xxx$ docker ps
CONTAINER ID        IMAGE                      COMMAND             CREATED             STATUS              PORTS                    NAMES
1451ca985166        oxidized/oxidized:latest   "oxidized"          26 minutes ago      Up 26 minutes       0.0.0.0:8888->8888/tcp   cocky_kepler
appledeMacBook-Pro-3:oxidized xxx$ ls
config      logs        pid     router.db   
x.x.x.x(保存的所有設備配置,會以 ip 命名保存在 config 中指定的目錄下,在這裏,我就直接保存在已經掛載的 /tmp/oxidized 下了,可修改,修改後記得掛載到 docker 容器內,否則宿主機就不能直接查看這個目錄了)

appledeMacBook-Pro-3:oxidized xxx$ pwd
/tmp/oxidized

解釋一下,掛載本地 /tmp/oxidized 目錄到容器內的 /root/.config/oxidized 目錄下(容器內的這個是 hardcode,沒嘗試過修改,當然這不是重點),將本地 8888 端口映射到容器的 8888 端口,好了,下面準備一下兩個重要的配置文件。

設備備份配置的本地信息文件 - router.db

# 設備類型可參考官方 support type list:https://github.com/ytti/oxidized/blob/master/docs/Supported-OS-Types.md

# Device Type Sample:
## cisco - ios, nxos, ...
## juniper - junos
## h3c - Comware
## Huawei - VRP
## ...

# Sample
## ip:device type:username:password:enable(可缺省enable,這個可以在 config 文件中配置)
x.x.x.x:device type:username:password
x.x.x.x:device type:username:password
x.x.x.x:ios:username:password
x.x.x.x:junos:username:password
x.x.x.x:nxos:username:password

配置文件 - config

---
username: xxx # 這地方無所謂的,因爲 router.db 中的設備配置信息會覆蓋這個地方的配置,或者說這裏配置的 username 叫做默認用戶名
password: xxx # 同上
model: nxos # 同上
resolve_dns: true
interval: 3600
use_syslog: false
debug: false
threads: 30
timeout: 20
retries: 3
prompt: !ruby/regexp /^([\w.@-]+[#>]\s?)$/
rest: 0.0.0.0:8888 # 可以用本地 8888 查看 web 端界面
#rest: false # 當然也可以徹底關掉 web 端界面
next_adds_job: false
vars: {}
groups: {}
models: {}
pid: /root/.config/oxidized/pid
stats:
  history_size: 10
input:
  default: ssh, telnet
  debug: false
  ssh:
    secure: false
  ftp:
    passive: true
  utf8_encoded: true
output:
  file:
    directory: /root/.config/oxidized # 配置保存文件目錄,可以修改,修改後記得掛載到 docker 容器內,否則宿主機就不能直接查看這個目錄
source:
  default: csv
  csv:
    file: /root/.config/oxidized/router.db # 設備備份配置的本地信息文件 - router.db
    delimiter: !ruby/regexp /:/
    map: # 配置設備備份信息 router.db 中的列對應信息,enable 第四列爲 vars_map,選填項
      name: 0
      model: 1
      username: 2
      password: 3
    vars_map:
      enable: 4
    gpg: false
model_map:
  cisco: nxos
  juniper: junos

其實還有很多可改項,就先不贅述了,總而言之,言而總之,docker 版本只要 image ready 之後,加上兩個配置文件,就可以 run 起來了,效果圖如下:

oxidized web UI

可以做配置比對,當然也可以更新到 gitlab 上再用 git 工具或者 Gitlab UI 做更加直觀的比對(需要更改配置,下次再說,因爲打算再搞一個 docker 版本,原先都是宿主機直接裝的==,親測可用)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章