oxidized在部署使用中遇到的问题
在生产部署oxidized的时候还是遇到了不少问题,这里整理出来:
1. 时区问题
默认页面上显示的是UTC时间,需要修改一个js文件。
1 | #查找js所在目录 |
编辑js,注释掉56行,删掉57行的timezone部分:
然后重启oxidized,刷新页面即可
2. group问题
默认没有设置的情况下,所有设备都在default组里。
设置group需要同时修改config和source源:
config部分,添加上group字段的映射:
1 | source: |
同一个group里的相同属性可以直接写在config里
source部分,分配对应的group
1 | FW-5525X-017:192.168.1.1:Cisco:asa:admin:Admin@123:Enable@456 |
重启后效果如图:
配置完group之后建议在output里开启以下两个feature
1 | output: |
可以实现 将配置按照groups划分为文件夹。否则,oxidized将为每个group创建一个本地的git repo,从而导致push remote repo失败
3. 配置中的uptime问题
有些设备的配置中存在uptime字段,会导致每次git commit都提示设备配置有改变。
oxidized官方的脚本里仅支持了部分设备在commit之前忽略这部分。
我这里遇到两个漏网的,分别是山石网科的stoneos 和华为USG防火墙的vrp系统。
山石设备需要忽略的show version
的Uptime和show configration running
中ipsec的pre-share,其中pre-share的key本身是加密的,但是经过测试,隔一段时间再show的时候密文居然变了。
设备输出是这样的:
1 | # show version |
根据以上格式,需要删除uptime所在行,以及替换加密的文本。修改ruby脚本如下(修改部分已添加注释):
1 | # vim /usr/local/rvm/gems/ruby-2.5.1/gems/oxidized-0.24.0/lib/oxidized/model/stoneos.rb |
对于华为的USG防火墙,主要是每次运行display命令的时候,会先输出当前时间*2018-10-10 15:16:50.440 +08:00
*,然后才是命令的内容;另外就是下面的Datebase Version的时间,防火墙的数据库更新也没必要触发配置变更:
1 | <BJ_IPSEC>disp version |
修改的话就就类似uptime,直接过滤掉这一行再存储,这里使用固定的时区08:00
作为过滤行的关键字:
1 | # vim /usr/local/rvm/gems/ruby-2.5.1/gems/oxidized-0.24.0/lib/oxidized/model/vrp.rb |
上面的\1
指的将第一个括号匹配的部分填充到这个位置。
修改完成后,再获取配置就不会提示有变化了。
这部分解决方案参考自Github的issues以及其他OS的脚本.
4. git repo冲突问题
默认情况下是不会出现冲突问题,但是如果在其他地方修改提交了remote repo,本地的oxidized repo没有变。这个如何再运行oxidized的push remote repo就回提示fail,解决办法也很简单:
确认下config中output部分的git目录的路径,直接删除rm -rf这个目录即可。