可能是目前最好用的网络配置备份工具-oxidized
说起配置管理,一直我面临的头疼问题——企业网的设备品牌太多太杂了。
基本上很少有机会去使用厂商私有的配置管理工具。SolarWinds的KiWi CaTools是一个非常不错的商业解决方案,但是,应该没有多少公司会在信息化上投入太多成本吧。
之前我是从网上找的和谐版CaTools,不过由于版本太旧,只能支持部分品牌的设备,将就了大半年。正要准备用python的netmiko自己写一个的时候,发现了这个工具——oxidized。简单测试了下,已经能覆盖我司的全部设备。
介绍
oxidized是一个轻量、可扩展的网络设备配置工具,目前能支持90多种操作系统。
- 支持多线程
- 支持多种数据源(csv,db,http)
- 支持多种输出类型(file,git,http)
- 支持RESTful API
Github项目地址:oxidized
安装
oxidized可以直接通过ruby的gem进行安装,也可以从docker启动:
1. CentOS手动安装
基于ruby,所以需要先把centos7上的ruby2.0升级到2.3版本,这里是有RVM来管理ruby版本。
首先是更新依赖包
1 | yum install -y curl gcc-c++ patch readline readline-devel zlib zlib-devel |
安装RVM前需要先导入gpg的公钥:
1 | gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 |
最新的rvm安装完成之后,还需手动把当前用户添加到rvm组才行:
1 | #把root用户加入到rvm group |
log out注销当前用户,然后再log in重新读取组信息,可以使用groups
命令查看当前用户的数组,加入rvm组后可以执行rvm命令
设置RVM环境并编译,然后安装Ruby 2.3.0并设置为默认值
1 | source /etc/profile.d/rvm.sh |
然后就可以通过Rubygems安装oxidized
1 | gem install oxidized |
安装完成后就可以进行初始配置了。
2. docker启动
首先需要创建一个配置文件的目录在宿主机上:
1 | mkdir /etc/oxidized |
然后第一次运行容器,来生成初始配置文件:
这一步仅用作生成config文件,如果已经有了,跳过这一步
1 | docker run --rm -v /etc/oxidized:/root/.config/oxidized -p 8888:8888/tcp -t oxidized/oxidized:latest oxidized |
这个时候/etc/oxidized
下应该已经有了一个config文件,把它编辑成你想要的样子;
同时,创建数据源/etc/oxidized/router.db
(下文具体解析config文件的内容和数据源格式)
正式启动容器:
1 | docker run -v /etc/oxidized:/root/.config/oxidized -p 8888:8888/tcp -t oxidized/oxidized:latest |
初始配置
Oxidized的配置文件是用的yaml格式,文件默认读取目录是/etc/oxidized/config
和~/.config/oxidized/config
。
初次运行的时候会自动生成默认的~/.config/oxidized/config
config文件
1 |
|
需要关注的内容不多:username
, password
, model
这些无需修改,source文件里的相应字段会更优先;interval
即是备份的周期;rest
部分是oxidized-web生成的网页,可以直观的查看各个设备的备份状态,保持127.0.0.0,后面可以另外部署一个nginx用于代理和认证。
下面是其他几个比较重要的配置:
1. source
定义了数据源,map
是解析的字段映射:
1 | more /root/.config/oxidized/router.db |
2. output
- file 以文件方式输出
1 | output: |
- git 以git方式输出
1 | output: |
3. hook
hook需要先指定类型,然后通过监听事件event来执行相应的动作
- push_to_remote
将配置保存到公司的gitlab是个不错的选择,可以方便直观的进行历史版本控制,以及进行配置对比。
push_to_remote能够运行的前提是output是以git方式进行输出。
先到gitlab上新建一个repo,然后上传key,修改oxidized的配置文件:
1 | hooks: |
运行
准备好配置文件之后,就可以运行了,默认直接在bash里已经安装了oxidized
命令;
使用oxidized &
来后台运行
或者启动一个screen,或者启动oxidied.service
查看日志,备份的file,或者git来确认备份进度
其他feature
nginx的web验证
nginx安装之前有写过
账号密码的话,需要使用apache的httpd-tools来生成密码文件,或者不想安装的话,可以使用在线 htpasswd 生成器
手动生成的话使用以下命令
1 | htpasswd –c /home/htpasswd user1 |
然后,新建nginx配置文件:
1 | server { |
重启nginx就可以了
设备group
当网络设备足够多时,可以将设备分组,以实现对某些属性的批量管理。
原文作者: Mansur
原文链接: http://nbma.info/maybe-the-best-conf-backup-tool-oxidized/
许可协议: 除特别声明外,本站文章均采用CC BY-NC 4.0许可协议,转载请注明出处。