超牛 X 的企業級網絡設備自動備份系統搭建

背景


网络运维管理的网络设备在量级较小的时候,传统的网络配置备份通常是人肉登陆手动备份,随着管理网络设备越来越多,进阶的方式通常会使用脚本自动抓取配置,通过 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: [email protected]

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


超牛 X 的企业级网络设备自动备份系统搭建


配置对比演示

超牛 X 的企业级网络设备自动备份系统搭建

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


超牛 X 的企业级网络设备自动备份系统搭建

最后把 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])?()$/

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


分享到:


相關文章: