利用docker部署oxidized网络设备备份系统
随着网络设备的增多,通过人手备份网络设备倍感压力,而且效率低。有编程基础的人可能会通过Python的parimiko 或者netmiko 连接到设备操作 把文件通过ftp 上传到FTP服务器, 在通过定时任务,定期自动备份。这个应该是现阶段主流非人民币网络玩家的最优解决方案。
今天我们来看看oxidized这个被称之为“最好用的”网络备份系统,友好的支持不同厂商。
oxidized简介
oxidized 是一个网络设备备份系统, 轻量级,可扩展,支持超过90多个操作系统。个人觉得它无与伦比的优势, 同时支持h3c,华为,思科。
随着容器化的兴起,部署软件变得的越来越简单,有的已经帮您封装好,你开箱即用就可以了。好了下面,我们看看这个oxidized系统有没有镜像的。
[root@node1 ~]# docker search oxidized
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
oxidized/oxidized Oxidized is a network device configuration b… [OK]
alectolytic/oxidized Oxidized: Alpine Linux based Docker image [OK]
klinnex/oxidized Oxidized [OK]
bootc/oxidized Oxidized, the configuration backup software …
edeln/oxidized oxidized as a framework, using its ssh and s…
mkbarry/oxidized-worker
mkbarry/oxidized-tooling
b3vis/oxidized Oxidized config backup software in an Alpine… [OK]
neteng1/oxidized Backup Network Devices
rbrayner/oxidized older oxidized [OK]
macaty/oxidized oxidized [OK]
ossobv/oxidized Edited oxidized (ios.rb) so you can use read…
dbrockus/oxidized This is a TEST, DO NO USE
voravitl/oxidized
zxandy/oxidized Oxidized - Configuration backup software htt…
deesel/oxidized
zeyanlin/oxidized configuration backup software (IOS, JunOS) -… [OK]
samkdocker/oxidized
talibaiiika/oxidized
splendid/oxidized mtk
sfoster/oxidized Docker Oxidized auto build [OK]
xrlx/graphite-rust Oxidized graphite stack [OK]
把官方的 oxidized/oxidized 镜像拉下来
[root@node1 ~]# docker pull oxidized/oxidized:latest
下载完启动镜像
[root@node1 data]# docker run --name='oxidized' -itd -v /data/oxidized:/root/.config/oxidized -p 8888:8888/tcp -t oxidized/oxidized
4bbb01b608e38c59469b1056e24c65f1f36f6e65b0734ab1e86b64b4efcf3306
说明一下:挂载本地/data/oxidized目录到容器内的/root/.config/oxidized目录下,将本地8888端口映射到容器的tcp8888端口。
查看是否已经启动完
[root@node1 data]# docker logs oxidized
*** Running /etc/my_init.d/00_regen_ssh_host_keys.sh...
*** Running /etc/my_init.d/10_syslog-ng.init...
Jul :: 4bbb01b608e3 syslog-ng[]: syslog-ng starting up; version='3.13.2'
*** Booting runit daemon...
*** Runit started as PID
Jul :: 4bbb01b608e3 cron[]: (CRON) INFO (pidfile fd = )
Jul :: 4bbb01b608e3 cron[]: (CRON) INFO (Running @reboot jobs)
edit ~/.config/oxidized/config
I, [--11T15::47.866728 #] INFO -- : Oxidized starting, running as pid
F, [--11T15::47.869750 #] FATAL -- : Oxidized crashed, crashfile written in /root/.config/oxidized/crash
no source csv config, edit ~/.config/oxidized/config
I, [--11T15::49.179948 #] INFO -- : Oxidized starting, running as pid
I, [--11T15::49.180885 #] INFO -- : lib/oxidized/nodes.rb: Loading nodes
F, [--11T15::49.181047 #] FATAL -- : Oxidized crashed, crashfile written in /root/.config/oxidized/crash
No such file or directory @ rb_sysopen - /root/.config/oxidized/router.db
从以上日志看到缺失router.db这个文件,导致启动失败。解决方法在/data/oxidized目录下新建router.db文件,并在router.db随意添加一条记录。后重新启动容器
[root@node1 oxidized]# touch router.db
[root@node1 oxidized]# cat router.db
192.168.1.1:vrp:admin:admin
[root@node1 oxidized]# docker restart oxidized
oxidized
[root@node1 oxidized]#
再次查看日志
[root@node1 data]# docker logs oxidized
......省略
Puma starting in single mode...
* Version 3.11.4 (ruby 2.5.1-p57), codename: Love Song
* Min threads: 0, max threads: 16
* Environment: development
* Listening on tcp://127.0.0.1:8888
Use Ctrl-C to stop
[root@node1 oxidized]#
修改配置文件
router.db是记录设备备份配置的本地信息文件
x.x.x.x:device type:username:password
10.10.24.241:ios:admin:password
10.10.28.235:comware:admin:password
10.10.0.107:vrp:admin:password
注解:device对应的是容器目录/var/lib/gems/2.5.0/gems/oxidized-0.26.3/lib/oxidized/model/的文件名
config文件
---
username: username : 用户名 这个参数不用改,会从router.db读取.
password: password : 密码 这个参数也不用改,会从router.db读取.
model: junos : 模型 这个参数也不用改,会从router.db读取.
interval: : 备份周期 单位是秒,也就是默认一个小时备份一次
log: /home/oxidized/.config/oxidized/logs/oxidized.log:日志
debug: false :debug模式
threads: :线程
timeout: : 超时
retries: : 重试次数
prompt: !ruby/regexp /^([\w.@-]+[#>]\s?)$/
rest: 127.0.0.1: :web 用到
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: 这个地方和router.db里面的参数对应 从0开始
name:
model:
username:
password:
gpg: false
model_map:
cisco: ios
juniper: junos
把rest:127.0.0.1:888修改成0.0.0.0:8888。重启容器,就可以访问web页面了。

利用docker部署oxidized网络设备备份系统的更多相关文章
- 利用docker部署elk交换机日志分析
今天我们来聊一下利用docker部署elk日志分析系统,这里解析一下elk是啥东西.elk分别是Elasticsearch,Logstash和Kibana的首字母缩写. Elasticsearch是一 ...
- CentOS下利用Docker部署Surging
原文:CentOS下利用Docker部署Surging 1. 安装Centos, 配置固定ip配置文件地址vi /etc/sysconfig/network-scripts/ifcfg-ens33`` ...
- 云服务器上利用Docker部署Django项目
转载别人的,请看下面链接 云服务器上利用Docker部署Django项目
- Docker在手,天下我有,在Win10系统下利用Docker部署Gunicorn+Flask打造独立镜像
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_164 书接上回,之前一篇:Win10环境下使用Flask配合Celery异步推送实时/定时消息(Socket.io)/2020年最 ...
- 使用docker部署WordPress博客系统(win10企业版)
docker介绍: docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相 ...
- Docker -- 2 -- 利用docker部署网站和数据库
在Docker – 系统整洁之道 – 1中已经对Docker的一些命令和Docker镜像的使用及操作做了记录. 这次就利用docker进行一次真正的实例使用,使用docker搭建一个简单的答题系统,这 ...
- CentOS6.5利用Docker部署ShowDoc
在Docker中部署ShowDoc 一.安装Docker 1.安装Docker yum install docker 最后出现Complete即可 2.启动服务 # service docker st ...
- 利用docker部署redis集群
目录 一.首先配置redis.conf文件,... 1 1.获取配置文件... 1 2.修改各配置文件的参数... 2 二.下载redis镜像.启动容器... 2 1.创建网络... 2 2.拉取镜像 ...
- odoo开发笔记 -- 单台物理服务器上,利用docker部署多套odoo应用
部署结构: 待更新! ----服务器硬件配置: 操作系统:ubuntu16.04-64bit CPU/内存:4核8G 1. 基础环境安装 nginx离线安装: docker环境安装: 2. 官方容器镜 ...
随机推荐
- 数据误操作,删库跑路?教你使用ApexSQLLog工具从 SQLServer日志恢复数据!
前几天同事不小心误操作,将SQLServer库的一张表的一个状态字段给刷成了一个统一状态,由于是update执行所以原来的相关状态无法确定.发生这种事情的时候我的小伙伴背后 一凉,估计心里里面想这怕是 ...
- 滴滴HBase大版本滚动升级之旅
桔妹导读:滴滴HBase团队日前完成了0.98版本 -> 1.4.8版本滚动升级,用户无感知.新版本为我们带来了丰富的新特性,在性能.稳定性与易用性方便也均有很大提升.我们将整个升级过程中面临的 ...
- 在Asp.NET Core中如何优雅的管理用户机密数据
在Asp.NET Core中如何优雅的管理用户机密数据 背景 回顾 在软件开发过程中,使用配置文件来管理某些对应用程序运行中需要使用的参数是常见的作法.在早期VB/VB.NET时代,经常使用.ini文 ...
- Python的数据的基本类型
基本数据类型 int整数 str 字符串 一般不存放大量的数据 bool 布尔值,用来判断. True,False list 列表.存放大量数据,[]表示,里面可以放各种数据类型 ...
- Dorado开发——树形下拉框
最近在学习Dorado开发的过程中,遇到了一个问题,Dorado的树形下拉框选择:Dorado默认情况下父节点和子节点都是可选的,而我要实现的是父节点不可选. 解决办法:在下拉框中,判断父子节点,点击 ...
- (八)利用 Profile 构建不同环境的部署包
接上回继续,项目开发好以后,通常要在多个环境部署,象我们公司多达5种环境:本机环境(local).(开发小组内自测的)开发环境(dev).(提供给测试团队的)测试环境(test).预发布环境(pre) ...
- controller介绍
Loadrunner Controller可以使用Loadrunner Controller管理和维护方案可以从一个单一的控制点简单有效的控制所有的Vuser 承担着多种工作任务.最常见的就是场景的设 ...
- WebDriverWait与expected_conditions结合使用
expected_conditions判断页面元素 demo2 from selenium import webdriver from selenium.webdriver.support.ui im ...
- 微信小程序入门基础
微信小程序入门基础 视频教程(https://edu.csdn.net/course/detail/8456?pre_view=1) 第一章.认识小程序 1.工具的下载与安装 2.小程序代码构成 ...
- 微信小程序-页面跳转与参数传递
QQ讨论群:785071190 微信小程序页面跳转方式有很多种,可以像HTML中a标签一样添加标签进行跳转,也可以通过js中方法进行跳转. navigator标签跳转 <view class=& ...