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