背景
网络运维管理的网络设备在量级较小的时候,传统的网络配置备份通常是人肉登陆手动备份,随着管理网络设备越来越多,进阶的方式通常会使用脚本自动抓取配置,通过 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
配置对比演示
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])?()$/
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