Oxidized 是一个使用 Ruby 编写的开源网络设备配置备份工具,是 RANCID(思科的一个工具) 的替代品,轻量级且可扩展的 Oxidized 支持 130 多种操作系统。

体验一下它的功能以及各种实现,看如何能与现有的系统进行整合,或者用 Python 造个简单的轮子。

结论:

  1. 整体使用感受:作为一个专门的配置备份软件,可以说把一个功能做到了比较高的水平!

  2. 亮点功能:可以支持监听设备上报的 syslog 日志中的配置改动来触发配置文件备份,对我来说是一个新的思路

    目前支持 ios、junos、eos、nsos、aruba,后面有时间可以验证一次。

  3. 很多实现细节没有体验,大致过了一遍文档

安装过程

拉取镜像

docker pull oxidized/oxidized

配置文件相关

创建目录,用来存放配置文件、备份的配置、运行日志、主机清单文件等等

mkdir /etc/oxidized

运行一次容器,让程序自动生成初始配置文件,--rm 参数为容器退出后自动删除该容器:

docker run --rm -v /etc/oxidized:/root/.config/oxidized -p 8888:8888/tcp -t oxidized/oxidized:latest oxidized

回显信息为:edit ~/.config/oxidized/config,说明已经生成了默认的配置文件。

编辑配置文件,oxidized 的配置文件是 yaml 格式的,详细的配置项Configuration,提供了多种灵活的数据继承的方法,即可以为每台、每组、每种设备等等进行不同的配置。

---
username: oxidized    # 值随意,以数据库为准
password: S3cr3tx     # 值随意,以数据库为准
model: junos          # 值随意,以数据库为准
interval: 3600        # 配置备份的间隔时间
log: ~/.config/oxidized/log   # 日志文件
debug: false
threads: 30   # 线程
timeout: 20   # 超时时间
retries: 3    # 失败重试次数
prompt: !ruby/regexp /^([\w.@-]+[#>]\s?)$/    # 登录设备后的提示符判断
crash:directory: ~/.config/oxidized/crasheshostnames: false
rest: 0.0.0.0:8888    # 前端界面
pid: ~/.config/oxidized/oxidized.pid
input:    # 连接方式default: ssh, telnetdebug: falsessh:secure: false
output:default: git      # 以git方式存储git:user: Oxidizedemail: oxidized@example.comrepo: "~/.config/oxidized/oxidized.git"
source:default: csvcsv:file: ~/.config/oxidized/router.db  # CSV 格式的主机数据库delimiter: !ruby/regexp /:/map:name: 0     # CSV 里面的值映射关系ip: 1model: 2username: 3password: 4group: 6vars_map:enable: 5
groups:             # 为每个组进行单独的配置mikrotik:username: adminpassword: blankubiquiti:username: ubntpassword: ubnt
model_map:            # 为每种设备类型进行单独的配置cisco: iosusername: adminpassword: passwordjuniper: junosironware:username: adminpassword: passwordvars:enable: enablepassword

router.db 主机数据库,默认是 CSV 格式,也支持通过 SQL 、SQLite、HTTP 等方式来拉取,最终的数据结构根据不同的来源进行处理,然后重点是主机清单里面的数据,要通过 mapvar_map 建立对应的映射关系,这里是配置文件可以灵活制定的关键。

具体每种来源的配置方式:Sources。

以 CSV 格式为例,应当是以下格式,默认是以 : 为分隔符,最终结果是个列表,然后映射值时根据下标:

r1:192.168.56.20:comware:netdevops:NetDevops@01:enable_pass:group1
r2:192.168.56.21:comware:netdevops:NetDevops@01:enable_pass:group2
r3:192.168.56.23:comware:netdevops:NetDevops@01:enable_pass:group2

运行

运行容器,将本地数据卷映射到容器内的指定目录,容器内部默认监听 8888 端口:

docker run -td \--name oxidized_1 \--restart=always \-v /etc/oxidized:/root/.config/oxidized \-p 8888:8888/tcp \oxidized/oxidized:latest \oxidized

程序输出

配置输出:

  1. 以文件的方式存储

    需要手动创建父目录 configs,每个设备一个配置文件,只保留最新的配置,不会保存历史配置。

    默认为每个组建立一个文件夹。

    每次会在原文件的基础上更新文件,不会保存历史。

  2. 以 git 的方式存储,默认为每个组创建一个 git 仓库,可以通过 single_repo: true 来配置使用同一个仓库,此时每个组为一个文件夹。

    oxidized 默认创建的的是 bare repo(What is a bare git repository?),相当于一个私有的 git 仓库,里面没有 git 的工作目录,只有版本文件,每次备份配置后会进行一次提交;本地的私有仓库,可以通过克隆来查看具体的备份文件。

    例如,我这里有一个 default.git 的目录,是上面 router.db 里面几台主机的配置备份信息:

    如果要查看具体的文件,可以克隆这个仓库:

    git clone /etc/oxidized/default.git my_config
    

    如果要把文件提交到远程仓库,可以在配置文件中添加 hooks 来实现,例如:

    hooks:push_to_remote:type: githubrepoevents: [post_store]  # 发生改变时触发操作remote_repo:routers: git@git.intranet:oxidized/routers.gitswitches: git@git.intranet:oxidized/switches.gitfirewalls: git@git.intranet:oxidized/firewalls.gitpublickey: /root/.ssh/id_rsa.pubprivatekey: /root/.ssh/id_rsa
    

    上面的配置会在备份的配置发生改变时,把三个本地仓库分别推送到远程仓库,远端仓库使用密钥认证。

注意事项

  1. 修改配置文件需要重启 docker 的时候,不会自动删除 pid 文件,会导致无法启动,需要手动删除解决。
rm -rf /etc/oxidized/pid && docker restart oxidized_1

前端界面展示

首页:

查看配置:

基于 git 方式时,查看版本:

查看版本差异:

网络设备自动备份工具 Oxidized 使用体验相关推荐

  1. Oxidized 网络设备自动备份系统搭建

    文章目录 前言 一.oxidized是什么? 二.oxidized搭建 1.环境准备 2.安装步骤 3.配置文件 4.router.db 文件规范 5.运行 6.Nginx验证登录 三,踩坑总结 前言 ...

  2. 20120520 Linux下mysql的自动备份工具

    文章摘自:http://hi.baidu.com/vb98/blog/item/2ed90cea835fa4cfd439c97f.html linux下的MySQL自动备份工具-第二版2011-10- ...

  3. 挺好用的SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面)

    挺好用的SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面) 原文:挺好用的SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面) 挺好用的SQLSE ...

  4. delphi Oracle导出多个表,Oracle数据库自动备份工具(Delphi源码)

    Oracle数据库自动备份工具(Delphi源码) 下载地址:http://www.blogjava.net/Files/96sd2/OraSvr.rar 『OracleBackupService』简 ...

  5. netmiko检测linux基线,网络设备自动巡检工具

    网络设备自动巡检工具 使用netmiko编写的网络设备自动巡检工具. 使用方法: 1.脚本读取当前目录下的配置文件(需手动创建):DEVICES.cfg和各网络设备的巡检模版 2.DEVICES.cf ...

  6. mysql自动备份工具_|Mysql自动备份工具(Auto MySQL Backup)下载v1.5 官方版 附教程 - 欧普软件下载...

    Auto MySQL Backup是一款好用的Mysql自动备份工具,可以对MySQL数据库进行每日.每周和每月备份,可同时备份多个数据库.压缩备份.备份远程数据和发送日志等,小编还带来了详细的使用方 ...

  7. delphi导入oracle数据库,Oracle数据库自动备份工具(Delphi源码)

    Oracle数据库自动备份工具(Delphi源码) 下载地址:http://www.blogjava.net/Files/96sd2/OraSvr.rar 『OracleBackupService』简 ...

  8. Syncovery 是目前功能最为强大的实时自动备份工具

    Syncovery Pro(原名叫做Super Flexible Synchronizer) 是目前功能最为强大的实时自动备份工具,连FTP.WebDAV等全部支持! 最近从V6开始改用比较好记.易懂 ...

  9. Syncovery 自动备份工具

    Syncovery 自动备份工具 首先工具到官网自行下载 安装成功之后 点击左上角 点击+号添加项目 进行配置,左侧选择要备份的文件夹,可以直接Browse选择本地文件,也可以Internet选择远程 ...

最新文章

  1. java写出文本文档乱码_对象流如何写出到文件以及为什么乱码
  2. 数据科学| 蛋白向量分析
  3. 卷积网络的学习(卷积核,通道,padding,stride等概念)
  4. 火币网的macd怎么算的_黄金投资中MACD的计算方式
  5. javaweb 图书管理系统完整代码_看一名Java开发人员以红队思维五分钟审计一套代码(续)...
  6. 干货分享丨玩转物联网IoTDA服务系列四-智能网关
  7. FindChildControl与FindComponent(动态创建的控件要通过Owner.FindComponent去找该控件)
  8. 在LaTeX中,如何在目录和章节(Chapter)等部分的shouye上显示页眉(解决没有页眉的问题)
  9. 1043. 输出PATest(20)-PAT乙级真题
  10. [转]mysql下如何执行sql脚本
  11. 【BZOJ】【2768】【JLOI2010】冠军调查
  12. 驱动精灵w8ndows xp sp2,爱普生Epson TM-T90打印机驱动官方正式版下载,适用于winxp,winvista,win7,win8,win10-驱动精灵...
  13. 激光技术领域的又一重大突破:光学频率梳
  14. ST7789-TFT屏幕驱动(整理有stm32/51单片机/arduino等驱动代码)
  15. SAP报表导出格式设置
  16. 2012 windows 端口聚合_如何在WindowsServer2012中实现NIC组合
  17. C++ 定义复数的加减乘除基本运算
  18. 【6.24校内test】T2 不老梦
  19. linux系统微信登录失败,在Manjaro系统登陆微信提示“默认保存位置不能使用”的解决...
  20. java利用Scanner获取键盘输入

热门文章

  1. 六界仙尊h5服务器维护多久,六界仙尊H5游戏常见问题说明
  2. 基于智慧路灯网关的智慧园区智能化解决方案
  3. NOIP2008全省提高组获奖名单
  4. 【解决】/bin/bash^M: 坏的解释器: 文本文件忙
  5. Excel取当前工作表名称
  6. 5折交叉验证_测试集训练集验证
  7. 高温风洞 风洞 风洞设备 回流式风洞
  8. 2020年T电梯修理答案解析及T电梯修理找答案
  9. uni-app开发之unipush推送踩坑填坑之旅
  10. P1936 【水晶灯火灵】