一、什么是Oxidized?
Oxidized是一个Ruby编写的开源项目,它能够帮助我们备份网络设备配置文件并进行版本控制。它通过SSH和Telnet来连接网络设备,将设备的配置信息备份在本地磁盘中,并通过Git等工具来进行版本控制。
Oxidized在备份之前会通过Netmiko、Net::SSH和Net::Telnet等库来连接网络设备,并通过YAML配置文件来实现管理。它能够支持大部分经典网络设备厂商的设备,包括Cisco、Juniper、H3C、华为等。
与其他备份工具相比,Oxidized最大的特点是自动化。它能够根据设备的模板自动备份,并将备份结果存储在本地和远程Git仓库中,从而方便用户进行版本管理和比对。
二、Oxidized的安装与配置
Oxidized的安装非常简单,只需要在Linux/Mac操作系统上执行类似以下命令即可:
sudo apt-get install ruby ruby-dev libsqlite3-dev libssl-dev pkg-config cmake
sudo gem install oxidized oxidized-script oxidized-web
安装过程可能需要花费一些时间,具体时间取决于网络速度和计算机配置。
安装完毕后,我们需要进行一些配置。首先,在编写配置文件前,我们需要创建一个独立的用户,用来运行Oxidized以避免权限问题。在Ubuntu/Debian系统中,可以通过以下命令来创建:
sudo adduser oxidized
sudo usermod -aG sudo oxidized
接下来,我们需要创建Oxidized的配置文件。Oxidized的配置文件是由YAML格式编写的,它定义了网络设备和Git仓库的相关信息。以下是一个简单的配置文件:
username: oxidized
password: SECRET_PASSWORD
model: cisco
interval: 3600
use_syslog: false
debug: false
threads: 30
rest:
listen: 0.0.0.0:8888
secure: false
input:
default: ssh, telnet
ssh:
secure: false
output:
default: git
git:
user: oxidized
email: oxidized@example.com
repo: "/home/oxidized/network-configs"
branch: master
private_key: /home/oxidized/.ssh/id_rsa
clone_dir: /home/oxidized/clone-configs
cron:
- description: Backup every 6 hours
hour: "*"
minute: "0,10,20,30,40,50"
day: "*"
month: "*"
weekday: "*"
在配置文件中,我们需要定义相应的用户名、密码、设备型号和备份周期等信息。其中,Git的配置信息是比较重要的。在上面的例子中,我们将备份结果存储在/home/oxidized/network-configs目录中,并通过Git进行版本控制。
三、Oxidized的使用与维护
使用Oxidized非常简单,只需要执行以下命令即可开始备份:
oxidized
当然,我们还可以将Oxidized作为服务来运行,以便自动启动和管理。以下是一个systemd的配置文件示例:
[Unit]
Description=Oxidized
After=network-online.target
[Service]
User=oxidized
ExecStart=oxidized
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
维护Oxidized也非常简单。我们只需要定期检查备份结果,保证Git仓库的正常运行,即可避免备份失败和数据丢失的问题。
另外,Oxidized还支持多种插件,例如提示插件、邮件通知插件和Web界面插件等。这些插件能够进一步扩展Oxidized的功能和适应更多的需求。
四、总结
Oxidized是一款非常实用的自动化备份工具,它能够帮助我们备份网络设备配置并进行版本控制。相比于手动备份,它能够大大减轻管理难度和工作量。
虽然Oxidized的安装和配置可能比较繁琐,但是一旦配置好,它就能够长期稳定地运行,并为我们带来实实在在的好处。