使用 Git 作为同步 zabbix 实例的方法

使用 Git 作为同步 zabbix 实例的方法

因此,在我们的环境中,我们使用自定义版本的 Zabbix 作为监控解决方案。我们将 Zabbix 部署到四个不同的站点,并希望确保版本在所有四个站点上保持一致。

到目前为止,我们有一个 Git 存储库,其中保存着我们 Zabbix 构建的副本,并且每晚都会通过 cron 自动更新。

但是,我想取消 cron 任务并设置某种“自动同步”机制,这样只要有人在一个节点上执行 git push,所有其他节点都会执行 git pull,无需用户干预。

有没有人听说过可以提供此功能的 FUSE 驱动程序?或者其他类型的解决方案?

谢谢!!

答案1

假设你正在提交一个裸/共享存储库,那么向每个服务器的 ssh 添加一个 post-receive 钩子、cd 到相应的目录并运行一个git pull.

#!/bin/bash

for node in $(cat nodelist)
do
    ssh $node "cd /path/do/working/directory && git pull"
done

如果您想要破坏某人在未经过 git 的情况下所做的任何更改,您可以执行类似git fetch --all后面跟着的操作来git reset --hard origin/master代替 pull。

其他一些选项包括使用 Jenkins 监视 repo 的变化并在其他节点上运行作业来更新其工作目录,或者使用 Puppet/Chef 之类的东西来管理您的配置并根据需要更新配置。

答案2

或许火花分享符合你的需要吗?

来自其网站:

它是如何工作的?

SparkleShare 会在您的计算机上创建一个特殊文件夹。您可以将远程托管的文件夹(或“项目”)添加到此文件夹。当有人添加、删除或编辑文件时,这些项目将自动与主机和您的所有同行保持同步。

相关内容