oxidized网络设备自动备份

作者: Shark1985 | 来源:发表于2019-04-26 13:12 被阅读2次

系统数据备份,对于运维工作来说是重要的一环。尤对网工来说,网络设备备份更是必不可少的一项工作。小规模网络,敲敲命令就能搞定,一般tftp一下就好,而稍有点规模的,就几十至上百台设备,依次手工操作备份,这样工作效率就很低下。

这时能够做到网络设备自动化备份,将是这一痛点的解决方案。本来初始设想通过学习ansible实现自动备份的目的,但就对网络设备telnet远程访问的方式,ansible实现起来就较有难度了。偶然在搜索解决方案时,找到了oxidized软件,同样是开源软件,在其实现上天然的支持了常规的远程方式,也就是说,网络设备只要通过telnet和ssh访问的,都可以进行自动备份。

oxidized在功能实现上,是需要识别具体网络设备品牌,然后才可以进行实际的备份动作。在oxidized软件包中有一个model目录,其下保存了大多数主流网络设备的rb文件,这个rb文件中配置了针对网络设备的一些常规操作,如登录telnet、ssh,还有show running-config等,然而并没有备份相关的tftp命令。后来经过实际验证,oxidized的备份,不同于tftp方式保存的是设备中的start.cfg文件,只是通过“show running-config”的方式,将所有配置保存到了一个文本文件中,而这也算是一种可恢复的备份方式了。

参考一

https://github.com/ytti/oxidized

参考二

https://www.opscaff.com/2018/04/18/oxidized-%E6%9C%80%E5%A5%BD%E7%94%A8%E7%9A%84%E7%BD%91%E7%BB%9C%E8%AE%BE%E5%A4%87%E5%A4%87%E4%BB%BD%E7%B3%BB%E7%BB%9F/

系统环境

 Ubuntu 18.04 LTS

安装

apt update
apt upgrade –y

apt-get install ruby ruby-dev libsqlite3-dev libssl-dev pkg-config cmake libssh2-1-dev libicu-dev
gem install oxidized
gem install oxidized-script oxidized-web

验证

oxidized -v
0.26.3

组件

  • config文件 存放配置文件
  • Sources字段 要备份设备的存放方式
  • Outputs字段 备份文件存放的方式
  • model字段:设备的厂商所用的os名称
  • router.db文件 存放被管理主机的地方

新建用户 oxidized

useradd -m -d /home/oxidized oxidized

配置oxidized 通过systemctl 管理

cp /var/lib/gems/2.5.0/gems/oxidized-0.26.3/extra/oxidized.service /lib/systemd/system

systemctl enable oxidized.service

oxidized目录

mkdir -p /home/oxidized/.config/oxidized

日志目录

mkdir /home/oxidized/.config/oxidized/logs/

备份文件存放目录

mkdir /home/oxidized/.config/oxidized/configs

设置用户目录和用户组

chown oxidized:oxidized /home/oxidized/.config/oxidized

配置文件

---
username: username #服务不检测,此项在router.db中检测
password: password #服务不检测,此项在router.db中检测
model: junos #服务不检测,此项在router.db中检测
interval: 3600
log: /home/oxidized/.config/oxidized/logs/oxidized.log
debug: false
threads: 30
timeout: 20
retries: 3
prompt: !ruby/regexp /^([\w.@-]+[#>]\s?)$/ #网络设备登录后匹配的提示符
rest: 127.0.0.1:8888 #web访问的地址,实际通过nginx重定向此地址
next_adds_job: false
vars: {}
groups: {}
models: {}
pid: "/home/oxidized/.config/oxidized/pid"
input:
  default: ssh, telnet
  debug: false
  ssh:
    secure: false
output:
  default: file
  file:
    directory: "/home/oxidized/.config/oxidized/configs"
source:
  default: csv
  csv:
    file: "/home/oxidized/.config/oxidized/router.db"
    delimiter: !ruby/regexp /:/
    map:
      name: 0
      model: 1
      username: 2
      password: 3
    gpg: false
model_map: #服务不检测,此项在router.db中检测
  cisco: ios #服务不检测,此项在router.db中检测
  juniper: junos #服务不检测,此项在router.db中检测

设备文件

#需要备份的设备列表
/home/oxidized/.config/oxidized/router.db
10.x.x.x:comware:admin:password

启动oxidized

systemctl restart oxidized.service

systemctl status oxidized.service
● oxidized.service - Oxidized - Network Device Configuration Backup Tool
   Loaded: loaded (/lib/systemd/system/oxidized.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-04-25 09:12:47 UTC; 52min ago
 Main PID: 21836 (oxidized)
    Tasks: 7 (limit: 4663)
   CGroup: /system.slice/oxidized.service
           └─21836 puma 3.11.4 (tcp://127.0.0.1:8888) [/]

查看日志

tail -f /home/oxidized/.config/oxidized/logs/oxidized.log 
I, [2019-04-25T09:12:48.346012 #21836]  INFO -- : Oxidized starting, running as pid 21836
I, [2019-04-25T09:12:48.347489 #21836]  INFO -- : lib/oxidized/nodes.rb: Loading nodes
I, [2019-04-25T09:12:48.497476 #21836]  INFO -- : lib/oxidized/nodes.rb: Loaded 1 nodes
I, [2019-04-25T09:12:55.093924 #21836]  INFO -- : Configuration updated for /10.x.x.x

查看备份目录

ls -l /home/oxidized/.config/oxidized/configs/
total 16
-rw-r--r-- 1 oxidized oxidized 8496 Apr 25 09:28 10.x.x.x

more /home/oxidized/.config/oxidized/configs/10.x.x.x
# H3C Comware Platform Software
# Comware Software, Version 5.20.99, Release 1110
# Copyright (c) 2004-2016 Hangzhou H3C Tech. Co., Ltd. All rights reserved.
# 
# H3C S5110-52P
# 128M    bytes DRAM
# 32M     bytes Flash Memory
# Config Register points to Flash

Web UI管理

#安装nginx
apt install nginx
#安装认证模块
apt-get install apache2-utils
#创建密码文件
mkdir -p /data/nginx/db/
cd /data/nginx/db/
touch passwd.db
#生成密码
htpasswd -c /data/nginx/db/passwd.db admin
#启动nginx服务
systemctl restart nginx.service

访问web管理

http://10.x.x.x/nodes
使用前边设置的admin和对应密码登录

已测试支持的网络设备厂商

其他只要在Model中有对应设备厂商的rb文件,一般应该都可以,待测试

#H3C
comware
#锐捷FW/飞塔FW
fortios
#华为
vrp


其他

支持设备类型的目录

 ls -l /var/lib/gems/2.5.0/gems/oxidized-0.26.3/lib/oxidized/model
 total 484
-rw-r--r-- 1 root root 2877 Apr 25 03:51 acos.rb
-rw-r--r-- 1 root root 1998 Apr 25 03:51 acsw.rb
-rw-r--r-- 1 root root  359 Apr 25 03:51 adtran.rb
-rw-r--r-- 1 root root  259 Apr 25 03:51 aen.rb
-rw-r--r-- 1 root root 1033 Apr 25 03:51 aireos.rb
-rw-r--r-- 1 root root  465 Apr 25 03:51 airos.rb
-rw-r--r-- 1 root root 2435 Apr 25 03:51 alteonos.rb
-rw-r--r-- 1 root root  216 Apr 25 03:51 alvarion.rb
-rw-r--r-- 1 root root 1325 Apr 25 03:51 aos7.rb
-rw-r--r-- 1 root root  581 Apr 25 03:51 aos.rb
-rw-r--r-- 1 root root 4043 Apr 25 03:51 aosw.rb
-rw-r--r-- 1 root root  198 Apr 25 03:51 apc_aos.rb
-rw-r--r-- 1 root root  487 Apr 25 03:51 arbos.rb
-rw-r--r-- 1 root root 1279 Apr 25 03:51 aricentiss.rb
-rw-r--r-- 1 root root 3407 Apr 25 03:51 asa.rb
-rw-r--r-- 1 root root 1277 Apr 25 03:51 asyncos.rb
-rw-r--r-- 1 root root  648 Apr 25 03:51 audiocodesmp.rb
-rw-r--r-- 1 root root  498 Apr 25 03:51 audiocodes.rb
-rw-r--r-- 1 root root 3113 Apr 25 03:51 awplus.rb
-rw-r--r-- 1 root root  249 Apr 25 03:51 axos.rb
-rw-r--r-- 1 root root 2187 Apr 25 03:51 boss.rb
-rw-r--r-- 1 root root  992 Apr 25 03:51 br6910.rb
-rw-r--r-- 1 root root 1208 Apr 25 03:51 c4cmts.rb
-rw-r--r-- 1 root root  576 Apr 25 03:51 cambium.rb
-rw-r--r-- 1 root root 1036 Apr 25 03:51 casa.rb
-rw-r--r-- 1 root root  838 Apr 25 03:51 catos.rb
-rw-r--r-- 1 root root  264 Apr 25 03:51 cisconga.rb
-rw-r--r-- 1 root root 1128 Apr 25 03:51 ciscosma.rb
-rw-r--r-- 1 root root 2088 Apr 25 03:51 ciscosmb.rb
-rw-r--r-- 1 root root  284 Apr 25 03:51 ciscovpn3k.rb

相关文章

网友评论

    本文标题:oxidized网络设备自动备份

    本文链接:https://www.haomeiwen.com/subject/bzufnqtx.html