专栏首页运维监控日志分析构建企业级网络设备自动备份平台 -- Oxidized (一)

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

作为一名资深的运维搬砖工,我的梦想就是网络服务器设备上线后永不宕机,天天过着吃着火锅还唱着歌的日子,然而每天各种人肉的数据备份操作让我苦不堪言。作为新时代的搬砖工别说人肉操作数据备份了就连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 版本

[root@kafka-node2 /]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core)

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

yum remove ruby ruby-devel

从 SCL安装 Ruby 2.3

#安装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

安装依赖软件包

yum install make cmake sqlite-devel openssl-devel libssh2-devel ruby gcc ruby-devel libicu-devel gcc-c ++

Oxidized

安装 Oxidized

gem install oxidized 
gem install oxidized-script oxidized-web

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

[root@kafka-node2 /]#oxidized
edit ~/.config/oxidized/config

查看 Oxidized 版本

[root@kafka-node2 /]# oxidized -v
0.28.0

Oxidized 配置文件

[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

[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 文件目录

创建设备配置存储目录

[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

前台运行

后台运行

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

yum -y install nginx
yum install httpd-tools

生成用户名密码文件

sudo htpasswd -c /etc/nginx/.htpasswd oxidized

Nginx 配置文件

[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 配置文件

nginx  -t

启动 Nginx 服务

systemctl    restart  nginx &&  systemctl    enable  nginx

Oxidized Web 身份认证

本文分享自微信公众号 - 开源搬运工宋师傅(gh_9e345a3a1074),作者:songhp

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

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

    Oxidized 0.28.0 测试环境使用 CentOS 7.6 系统 ,缺点是 CentOS 7 系统集成的软件版本太低。Oxidized 需运行在 rub...

    Kevin song
  • 构建企业级网络设备自动备份系统 -- Oxidized (二)

    Oxidized 使用 rugged/libgit2 接口, 通过 git diff 来比较配置文件差异

    Kevin song
  • OPNSense 构建企业级防火墙--site-to-site network(六)

    OPNsense是一个功能非常丰富强大的开源防火墙及路由平台,本篇文章将介绍如何使用OPNsense 内置 OpenVPN 模块来进行跨区域组网。实现不同地域的...

    Kevin song
  • NVIDIA Jetson TX2入门傻瓜教程:带你30分钟跑完这几个经典程序

    本文献给对GPU开发入门的Jetson TX2用户(如果对Ubuntu都不熟悉的人,我基本都会建议先别直接玩TX2,请先在电脑上学习)。这部分用户往往热情高涨,...

    GPUS Lady
  • PWN-格式化字符串漏洞

    格式化字符串函数:格式化字符串函数就是将计算机内存中表示的数据转化为我们人类可读的字符串格式

    yichen
  • Ubuntu下如何更快地安装gcc编译器

    最近操作系统开始上实验课了,瞟了一眼实验目录,看到了“gcc”的字样,一下子勾起了不好的回忆。记得上学期上计组的时候,曾经尝试在自己电脑的虚拟机上安装 gcc ...

    Chor
  • 2019年Java架构师必读书籍

    动力节点Java培训最新上线Java实验班,等你来测试自己适不适合学习Java编程哦!

    动力节点Java学院
  • PTF:一款多模块渗透测试框架

    The PenTesters Framework (PTF)是一个针对Debian/Ubuntu/ArchLinux开发设计的Python脚本,在PTF的帮助下...

    FB客服
  • 全文搜索引擎Elasticsearch入门教程

    全文搜索属于最常见的需求,开源的Elasticsearch(以下简称 Elastic)是目前全文搜索引擎的首选。 它可以快速地储存、搜索和分析海量数据。维基百科...

    企鹅号小编
  • 字符串排序----三向字符串快速排序

    SuperHeroes

扫码关注云+社区

领取腾讯云代金券