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

构建企业级网络设备自动备份平台 -- Oxidized (一)

作者头像
Kevin song
发布2020-07-02 14:20:50
6.4K8
发布2020-07-02 14:20:50
举报

作为一名资深的运维搬砖工,我的梦想就是网络服务器设备上线后永不宕机,天天过着吃着火锅还唱着歌的日子,然而每天各种人肉的数据备份操作让我苦不堪言。作为新时代的搬砖工别说人肉操作数据备份了就连ctrl+c ctrl+v 我都不愿意操作,怎么办呢?答案就是人一定要有梦想说不准哪天就实现了,接下来我来告诉你什么叫幸福来的太突然。为大家介绍宇宙无敌的网络设备自动备份系统 -- Oxidized

Oxidized 介绍

Oxidized 是一个开源的网络设备配置备份工具,轻量级且可扩展的Oxidized支持130多种操作系统。

Oxidized 组成

config 文件:oxidized 配置文件

Sources 字段:定位 router.db 文件的位置

Outputs 字段 :设备备份文件的存储位置

model 字段:设备厂商所用的系统, 核心功能就是靠这个实现的

router.db文件:被管网络设备详细信息

oxidized 项目链接

https://github.com/ytti/oxidized

系统环境

Oxidized 需要运行在Ruby 2.3或更高版本,CentOS 7 系统集成 Ruby2.0 版本

代码语言:javascript
复制
[root@kafka-node2 /]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core)

卸载 CentOS 7 系统自带的 Ruby2.0 版本

代码语言:javascript
复制
yum remove ruby ruby-devel

从 SCL安装 Ruby 2.3

代码语言:javascript
复制
#安装centos-release-scl库
yum install centos-release-scl 
#安装rh-ruby23 rh-ruby23-ruby-devel 
yum install rh-ruby23 rh-ruby23-ruby-devel 
#启用rh-ruby23 Software Collection的环境中运行Bash shell
scl enable rh-ruby23 bash

安装依赖软件包

代码语言:javascript
复制
yum install make cmake sqlite-devel openssl-devel libssh2-devel ruby gcc ruby-devel libicu-devel gcc-c ++

Oxidized

安装 Oxidized

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

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

代码语言:javascript
复制
[root@kafka-node2 /]#oxidized
edit ~/.config/oxidized/config

查看 Oxidized 版本

代码语言:javascript
复制
[root@kafka-node2 /]# oxidized -v
0.28.0

Oxidized 配置文件

代码语言:javascript
复制
[root@kafka-node2 oxidized]# cat config
---
username: username
password: password
model: junos
resolve_dns: true
interval: 3600
log: /root/.config/oxidized/logs/oxidized.log
use_syslog: false
debug: false
threads: 30
timeout: 30
retries: 3
prompt: !ruby/regexp /^([\w.@-]+[#>]\s?)$/
rest: 192.168.99.233:8888
next_adds_job: false
vars: {}
groups: {}
models: {}
pid: "/root/.config/oxidized/pid"
crash:
  directory: "/root/.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: "/root/.config/oxidized/configs"
source:
  default: csv
  csv:
    file: "/root/.config/oxidized/router.db"
    delimiter: !ruby/regexp /:/
    map:
      name: 0
      model: 1
      username: 2
      password: 3
    gpg: false
model_map:
  juniper: junos
  cisco: ios

Oxidized配置文件介绍

创建 router.db 文件

格式:

hostname/ip:os:username:password:group

代码语言:javascript
复制
[root@kafka-node2 oxidized]# pwd
/root/.config/oxidized
[root@kafka-node2 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
复制
[root@kafka-node2 oxidized]# pwd
/root/.config/oxidized
[root@kafka-node2 oxidized]# mkdir  -p configs

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

config Oxidized主配置文件;

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

logs 日志存储目录;

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

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

启动 Oxidized

前台运行

后台运行

代码语言:javascript
复制
nohup oxidized >> /var/log/oxidized.log 2>&1 &

设备备份文件

Oxidized Web

Oxidized Web 参数介绍

last status: 绿色(备份正常), 蓝色(正在备份), 红色(备份失败)

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

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

Nginx 反向代理认证

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

安装 Nginx 和 httpd-tools

代码语言:javascript
复制
yum -y install nginx
yum install httpd-tools

生成用户名密码文件

代码语言:javascript
复制
sudo htpasswd -c /etc/nginx/.htpasswd oxidized

Nginx 配置文件

代码语言:javascript
复制

[root@kafka-node2 nginx]# egrep -v "*#|^$" /etc/nginx/conf.d/default.conf 
server {
    listen       80;
    server_name  192.168.99.233;
    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/;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

Oxidized 默认只允许从本地系统(127.0.0.1)在端口8888上 web 访问。

检查Nginx 配置文件

代码语言:javascript
复制
nginx  -t

启动 Nginx 服务

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

Oxidized Web 身份认证

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

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

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

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

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