故事背景
还是从回顾历史来谈谈, 网络设备备份的心血历程:
1 人肉
手动登陆到设备操作
2 脚本+人肉
典型的是 使用 SecureCRT 的Scripts ,用VB写脚本模拟SSH 或者telnet登陆设备然后操作。
对于中小型企业 网络管理员来说 securecrt脚本几乎没有学习成本, 喜欢脚本运维的同学 推荐 去看一下 https://github.com/191801737/securecrt_network
3 脚本全自动化
通过Python的parimiko 或者netmiko 连接到设备操作 把文件通过ftp 上传到FTP服务器, 在通过定时任务,定期自动备份。这个应该是现阶段主流非人民币网络玩家的最优解决方案。
4 系统全自动备份
如果一天领导对你说想要一个备份系统能备份思科,H3C,华为,飞塔, 就是能够支持国内常用的网络设备, 要有web界面,要能够查看配置差异对比, 还要能发邮件来显示配置差异, 嗯嗯,暂时先要这么多吧,对了公司为了成本考虑只给这个系统提供一台用来安装的虚拟机。。
你会不会心里默默的唱:你还要我怎样
而我们今天要聊的就是这样的一个系统, 而且安装配置简单,最重要开源免费 真正的大杀器 不负”最好用”之名。
简介
oxidized 简介
oxidized 是一个网络设备备份系统, 轻量级,可扩展,支持超过90多个操作系统
个人觉得它无与伦比的优势, 同时支持h3c,华为,思科.
环境搭建
服务器操作系统推荐使用ubuntu ,CentOS, Oracle Linux, Red Hat Linux,FreeBSD 也都是支持的
oxidized安装
apt update
apt upgrade –y
apt-get install ruby ruby-dev libsqlite3-dev libssl-dev pkg-config cmake libssh2-1-dev
gem install oxidized
gem install oxidized-script oxidized-web
验证安装
root@node-2:~# oxidized -v
0.21.0
这样oxidized 就安装好了.版本是 0.21.0
配置oxidized
oxidized 有几个组件 很重要 先简单说下
config文件 就用来存放配置文件
Sources 字段: 指出要备份设备的存放方式
Outputs 字段 : 指出备份文件存放的方式
model 字段:指出该设备的厂商所用的os名称, 核心功能就是靠这个实现的。
router.db文件 可以理解成 存放被管理主机的地方
初始化
新建用户 oxidized
useradd -m -d /home/oxidized oxidized
配置oxidized 通过systemctl 管理
cp /var/lib/gems/2.3.0/gems/oxidized-0.21.0/extra/oxidized.service /lib/systemd/system
systemctl enable oxidized.service
创建oxidized用到的一些文件夹
mkdir -p /home/oxidized/.config/oxidized
日志文件夹
mkdir /home/oxidized/.config/oxidized/logs/
备份文件存在文件夹
mkdir /home/oxidized/.config/oxidized/configs
设置文件夹用户和用户组
chown oxidized:oxidized /home/oxidized/.config/oxidized
config文件
系统的核心 就靠着一个文件完成各种厂商的设备备份。
但是配置非常简单,复制过去 完全不用修改。是的 你没有听错.是的 不要修改就能用。
vim config
---
username: username
password: password
model: junos
interval: 3600
log: /home/oxidized/.config/oxidized/logs/oxidized.log
debug: false
threads: 30
timeout: 20
retries: 3
prompt: !ruby/regexp /^([\w.@-]+[#>]\s?)$/
rest: 127.0.0.1:8888
next_adds_job: false
vars: {}
groups: {}
models: {}
pid: "/home/oxidized/.config/oxidized/pid"
input:
default: ssh, telnet
debug: false
ssh:
secure: false
output:
default: file
file:
directory: "/home/oxidized/.config/oxidized/configs"
source:
default: csv
csv:
file: "/home/oxidized/.config/oxidized/router.db"
delimiter: !ruby/regexp /:/
map:
name: 0
model: 1
username: 2
password: 3
gpg: false
model_map:
cisco: ios
juniper: junos
这个时候就开始引入我们需要备份的设备啦,我分别找了思科,H3C,华为的设备
格式很固定 请小伙伴复制过去修改,
我分别找了思科,H3C,华为的设备
vim router.db
10.10.24.241:ios:admin:password
10.10.28.235:comware:admin:password
10.10.0.107:vrp:admin:password
是的, 这个时候配置部分就完了,总结下来,除了软件的安装,只需要编辑一下router.db就能用起来了,简单到不可相信,真的么?这样就能自动备份了么?让我们来启动下软件看看结果
启动oxidized
在启动之前 设置下 文件夹的 用户和组
chown -R oxidized:oxidized /home/oxidized/.config/oxidized
熟悉的systemctl命令 是不是很亲切
systemctl restart oxidized.service
systemctl status oxidized.service
确认oxidized 正常启动后 这个时候 我们就可以在
/home/oxidized/.config/oxidized/configs
文件夹下面 看到备份的文件,天啊 这样就自动化备份了 难以相信的简单 有没有。
配置想在web上看怎么办,我接着往下走。
root@node-2:/home/oxidized/.config/oxidized# ll configs
total 32
drwxr-xr-x 2 oxidized oxidized 4096 4月 20 10:55 ./
drwxr-xr-x 11 oxidized oxidized 4096 4月 20 10:55 ../
-rw-r--r-- 1 oxidized oxidized 6102 4月 20 10:55 10.10.24.241
-rw-r--r-- 1 oxidized oxidized 7668 4月 20 10:55 10.10.28.235
-rw-r--r-- 1 oxidized oxidized 7840 4月 20 10:55 10.10.0.107
配置oxidized-web
apt install nginx
root@node-2:~# vim /etc/nginx/conf.d/oxidized.conf
server {
listen 80;
listen [::]:80;
server_name 10.10.18.141;
location / {
proxy_pass http://127.0.0.1:8888/;
}
access_log /var/log/nginx/access_oxidized.log;
error_log /var/log/nginx/error_oxidized.log;
}
重启nginx
systemctl restart nginx.service
查看效果
在浏览器中输入 ubuntu的ip地址
让我们来点开一个看看。多么熟悉的画面啊。什么情况,我是谁 我在哪里 发生了什么 怎么这么简单就实现了我多年想要的效果。 幸福来的太突然了 有没有。
这样就搞定收工啦 系统默认每个小时候 备份一次。
简单说一下
name: 就是 routr.db里面的对应的ip地址
model: 就是对应厂商的model
last status: 绿色(备份正常), 蓝色(正在备份), 红色(备份失败)
last update: 上一次备份的时间(配置文件里面默认1个小时 自定义修改interval的值即可)
action: 点击云一样的图标就能看到 备份的内容, 后面的那个半圆 手动强制备份. 中间的那个下一篇文章会详解。
结束语
到这里 就算把这个系统比较完善搭建起来了,使用是完全没有问题。
如果你是不超过200人公司的网络管理员,有了这样的神器,还要啥自行车。
后面的进阶内容,近期发布,下一篇文章中 慢慢说清楚附件中的内容,想尝鲜的 同学欢迎加下QQ 群: 752774493
附件
配置对比
发送邮件
web 打开需要登录验证