前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >构建企业级网络设备自动备份系统 -- Oxidized (ubuntu 20.04 LTS)

构建企业级网络设备自动备份系统 -- Oxidized (ubuntu 20.04 LTS)

作者头像
Kevin song
发布2020-07-07 16:05:35
4.2K0
发布2020-07-07 16:05:35
举报
文章被收录于专栏:运维监控日志分析

Oxidized 0.28.0 测试环境使用 CentOS 7.6 系统 ,缺点是 CentOS 7 系统集成的软件版本太低。Oxidized 需运行在 ruby 2.3 或更高版本,CentOS 7 系统集成 Ruby2.0 ,而 ubuntu 20.04 LTS 系统集成 ruby 2.7.0。使用低版本的软件显然不是我的 style 。过去部署 zabbix,elk ,JumpServer 和 OPNsense 等应用一直使用 RHEL/CentOS 系统做为基础支撑,对 ubuntu 系统操作很陌生。ubuntu 20.04 LTS 版本 2020.4 发布,于是大胆决定 Oxidized 生产环境使用 ubuntu 20.04 LTS 版本作为基础支撑。

不折腾,何为人生!盘他 !挖坑填坑专业户!

干货开始之前先欣赏下 ubuntu 绚丽的桌面,后面的操作在命令行下进行哦!

Ubuntu 系统版本

代码语言:javascript
复制
ubuntu@ecv-node1:/$ lsb_release  -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04 LTS
Release:        20.04
Codename:       focal

更新软件包

代码语言:javascript
复制
sudo apt-get update
sudo apt-get upgrade

启用 universe 发行版组件

对所有源启用 "universe" 发行版组件

代码语言:javascript
复制
sudo add-apt-repository universe

安装依赖软件包

代码语言:javascript
复制
sudo apt-get install ruby ruby-dev libsqlite3-dev libssl-dev pkg-config cmake libssh2-1-dev libicu-dev zlib1g-dev g++ git

Oxidized

安装 Oxidized

代码语言:javascript
复制
sudo gem install oxidized
sudo gem install oxidized-script oxidized-web

查看 Oxidized 版本

代码语言:javascript
复制
ubuntu@ecv-node1:~$ oxidized -v
0.28.0

启动 Oxidized(首次运行 Oxidized,会提示去编辑配置文件)

代码语言:javascript
复制
ubuntu@ecv-node1:~$ oxidized
edit ~/.config/oxidized/config

Oxidized 配置文件

代码语言:javascript
复制
ubuntu@ecv-node1:/$ cat /home/ubuntu/.config/oxidized/config
---
username: username
password: password
model: junos
resolve_dns: true
interval: 3600
#log: /home/ubuntu/.config/oxidized/logs/oxidized.log
use_syslog: false
debug: false
threads: 30
timeout: 20
retries: 3
prompt: !ruby/regexp /^([\w.@-]+[#>]\s?)$/
rest: 192.168.99.52:8888
next_adds_job: false
vars: {}
groups: {}
models: {}
pid: "/home/ubuntu/.config/oxidized/pid"
crash:
  directory: "/home/ubuntu/.config/oxidized/crashes"
  hostnames: false
stats:
  history_size: 10
input:
  default: ssh, telnet
  debug: false
  ssh:
    secure: false
  ftp:
    passive: true
  utf8_encoded: true
output:
  default: file
  file:
    directory: "/home/ubuntu/.config/oxidized/configs"
source:
  default: csv
  csv:
    file: "/home/ubuntu/.config/oxidized/router.db"
    delimiter: !ruby/regexp /:/
    map:
      name: 0
      model: 1
      username: 2
      password: 3
      group: 4
    gpg: false
model_map:
  juniper: junos
  cisco: ios

创建 router.db 文件

格式:

ip:os:username:password:group

代码语言:javascript
复制
ubuntu@ecv-node1:~/.config/oxidized$ pwd
/home/ubuntu/.config/oxidized
ubuntu@ecv-node1:~/.config/oxidized$ cat router.db 
192.168.99.112:comware:admin:password:group1
192.168.99.113:comware:admin:password:group1
192.168.99.254:comware:admin:password:group2
192.168.99.21:vrp:admin:password:group2

Oxidized 文件目录

创建设备配置存储目录

代码语言:javascript
复制
ubuntu@ecv-node1:~/.config/oxidized$ pwd
/home/ubuntu/.config/oxidized
ubuntu@ecv-node1:~/.config/oxidized$ sudo mkdir -p configs

Oxidized 文件文件默认存储在 ~/.config/oxidized/ 目录下

config : Oxidized 主配置文件;

crash : Oxidized 所有的原始模块路径;

logs : Oxidized 日志存储;

configs : 设备配置文件存储目录;

router.db 被管网络设备详细信息;

启动 Oxidized

前台运行

systemctl 管理 Oxidized

查找 oxidized.service

代码语言:javascript
复制
ubuntu@ecv-node1:/$ sudo find  / -name oxidized.service
/var/lib/gems/2.7.0/gems/oxidized-0.28.0/extra/oxidized.service

sudo cp  /var/lib/gems/2.7.0/gems/oxidized-0.28.0/extra/oxidized.service  /lib/systemd/system

oxidized.service 文件(使用 ubuntu 用户启动)

代码语言:javascript
复制
sudo vim /lib/systemd/system/oxidized.service

Oxidized 服务启动、停止、重启、开机启动、状态

代码语言:javascript
复制
systemctl start oxidized.service
systemctl stop oxidized.service
systemctl restart oxidized.service
systemctl enable oxidized.service
systemctl status oxidized.service

查看 oxidized.service 服务状态

查看设备备份文件

Oxidized Web

Last Status: 绿色(备份正常), 蓝色(正在备份), 红色(备份失败)

Last Update: 上一次备份的时间(配置文件里面默认1个小时 自定义修改interval的值即可)

Last Changed: 配置文件发生改变的时间

action: 点击第一个图标就能看到设备备份文件内容,第二个图标为配置文件比对, 第三个图标为手动强制备份.

Nginx 反向代理认证

Oxidized Web 默认不提供任何安全认证,为保证系统安全性使用 Nginx 反向代理进行 Web 登录认证。

安装 Nginx 和 apache2-utils

代码语言:javascript
复制
sudo apt-get install nginx
sudo apt-get install apache2-utils

生成用户名密码文件

htpasswd 来创建和生成加密的用户用于基础认证(Basic Authentication)

代码语言:javascript
复制
ubuntu@ecv-node1:/$sudo htpasswd -c /etc/nginx/.htpasswd oxidized

Nginx 配置文件

代码语言:javascript
复制
sudo vim /etc/nginx/conf.d/default.conf
server {
    listen       80;
    server_name  192.168.99.52;
    root   /usr/share/nginx/html;
    auth_basic "oxidized auth access";
    auth_basic_user_file /etc/nginx/.htpasswd;
    location / {
        proxy_pass http://127.0.0.1:8888/;
    }
    access_log  /var/log/nginx/access.log;
    error_log  /var/log/nginx/error.log error;
}

Oxidized 默认选项是使其只能从本地系统(127.0.0.1)在端口 8888 上访问

检查Nginx 配置文件

代码语言:javascript
复制
nginx  -t

启动服务

代码语言:javascript
复制
systemctl    restart  nginx &&  systemctl    enable  nginx

Oxidized Web 身份认证

Oxidized Web Last Update 使用 UTC 时间,和 CST 时间差8个小时

查找 oxidized.js 文件

代码语言:javascript
复制
ubuntu@ecv-node1:/$ sudo find  / -name oxidized.js
/var/lib/gems/2.7.0/gems/oxidized-web-0.13.1/lib/oxidized/web/public/scripts/oxidized.js

修改 oxidized.js 文件

重启 oxidized 服务

代码语言:javascript
复制
systemctl restart oxidized.service

Oxidized Web UI

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源搬运工宋师傅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 不折腾,何为人生!盘他 !挖坑填坑专业户!
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档