背景
网络运维管理的网络设备在量级较小的时候,传统的网络配置备份通常是人肉登陆手动备份,随着管理网络设备越来越多,进阶的方式通常会使用脚本自动抓取配置,通过 FTP 等把配置上传到某处存储,但如果可以有一个备份系统不需要你使用脚本、不限设备厂商可以支持国内外主流的网络设备、同时有web界面,能够查看配置差异对比,同时可以同时同步配置到内部 Gitlab。而我们今天要聊的就是这样的一个系统, 而且安装配置简单,最重要开源免费 真正的大杀器 不负”最好用”之名。
官网链接:https://github.com/ytti/oxidized
oxidized搭建
环境准备
|
|
|
|
|
|
卸载系统自带 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])?(<[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 就可以正常安装啦!