查看博客目录
保姆级教程:10分钟搭建 Oxidized,实现网络设备配置自动备份
今天分享一个开源神器——Oxidized
还在为复杂的依赖安装头疼吗?今天教你用Docker 10分钟搞定Oxidized,轻松实现网络设备配置自动备份!
一、Oxidized 是什么
**Oxidized 是一个开源、轻量级的网络设备配置自动备份工具。**支持超过 130 种操作系统类型
简单说,它做到了三件事:
-
自动备份:定时自动备份网络设备配置
-
版本管理:记录每次配置变化,形成历史版本
-
集中管理:统一管理所有网络设备的配置文件
二、Oxidized 组成
config 文件:oxidized 配置文件
Sources 字段:定位 router.db 文件的位置
Outputs 字段 :设备备份文件的存储位置
router.db文件:被管网络设备详细信息
model 字段:设备厂商所用的系统, 核心功能就是靠这个实现的(包含各个厂商设备的查看配置脚本)
oxidized 项目地址:https://github.com/ytti/oxidized
支持os类型:https://github.com/ytti/oxidized/blob/master/docs/Supported-OS-Types.md
三、使用 Docker 安装部署
1、环境准备
在开始安装前,确保你的系统满足以下要求:
- 🖥️ Linux/Unix系统(本文以centos为例)
- ☕ 已安装好Docker 和 Docker Compose
2、安装示例
# 1. 在 root 用户的家目录下创建名为 "oxidized" 的目录
[root@localhost ~]# mkdir oxidized
# 2. 切换到新创建的目录,并编辑 docker-compose.yml
[root@localhost oxidized]# cd oxidized && vim docker-compose.yml
services:
oxidized:
restart: always
image: docker.io/oxidized/oxidized:latest
container_name: oxidized
ports:
- 8888:8888
environment:
TZ: Asia/Shanghai
volumes:
- /root/oxidized/oxidized-config:/home/oxidized/.config/oxidized
# 3. 启动 Docker Compose 服务
[root@localhost oxidized]# docker compose up -d
查看容器运行是否成功:docker compose ps -a

查看日志:docker compose logs oxidized -n 20

发现报错,原因如下:
1、需提前配置config文件,使用docker启动之后目录下会多了一个oxidized-config目录,config文件就在这个目录下面

修改config文件,参考如下:
vim /root/oxidized/oxidized-config/config
---
username: username
password: password
model: junos
resolve_dns: true
interval: 3600 # 备份间隔时间,单位秒
debug: false
run_once: false
threads: 30 # 并发线程数
use_max_threads: false
timeout: 20 # 单次连接/命令交互超时(秒)
timelimit: 300 # 单个作业整体时间上限(秒)
retries: 3 # 连接失败重试次数
prompt: !ruby/regexp /^([\w.@-]+[#>]\s?)$/
next_adds_job: false
vars: {}
groups: {}
group_map: {}
models: {}
pid: "/home/oxidized/.config/oxidized/pid"
extensions:
oxidized-web:
load: true
listen: 0.0.0.0
port: 8888
crash:
directory: "/home/oxidized/.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: git
git:
user: Oxidized
email: [email protected]
repo: "/home/oxidized/.config/oxidized/git-repos/default.git"
source:
default: csv
csv:
file: "/home/oxidized/.config/oxidized/router.db"
delimiter: !ruby/regexp /:/
map:
name: 0
ip: 1
model: 2
username: 3
password: 4
group: 5
gpg: false
model_map:
juniper: junos
cisco: ios
2、编辑完配置文件后,在相同路径下创建一个router.db文件,用来存储主机基本信息并被config文件调用
我这里分别拿一台华为和H3C设备测试,以下填写的信息就是对应上面config配置中map的顺序
vim /root/oxidized/oxidized-config/router.db
huawei-ce12800:192.168.225.2:vrp:admin:test@123456:group1
H3C-vFW1000:192.168.225.5:comware:admin:test@123456:group2
上面配置完成后使用 docker compose restart oxidized 重启容器
可以看到已无报错并监听了8888端口

四、效果展示
通过 http://ip地址:8888 可访问web界面

Oxidized Web 参数介绍
last status: 绿色(备份正常), 蓝色(正在备份), 红色(备份失败)
last update: 上一次备份的时间(配置文件里面默认1个小时 自定义修改interval的值即可)
action: 点击第一个图标就能看到设备备份文件内容,第二个图标为配置文件比对, 第三个图标为手动强制备份.
1、以下是查看配置内容

2、修改配置后重新备份查看配置比对情况



从上面结果可以看到不仅能备份配置还能和之前的配置进行比对做了哪些修改
