因此,在我们的环境中,我们使用自定义版本的 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 会在您的计算机上创建一个特殊文件夹。您可以将远程托管的文件夹(或“项目”)添加到此文件夹。当有人添加、删除或编辑文件时,这些项目将自动与主机和您的所有同行保持同步。