所以在我们的环境中,我们使用Zabbix的自定义版本作为监控解决scheme。 我们将Zabbix部署到四个不同的站点,并希望确保这四个站点的构build是一致的。
到目前为止,我们有一个Git仓库,它拥有我们的Zabbix版本,每天晚上都会通过cron自动更新。
但是,我想取消cron任务,并设置某种“自动同步”机制,只要有人在一个节点上进行git推送,其他所有节点都不做任何干预用户。
有没有人听说过可能提供这种function的FUSE驱动程序? 或者其他一些解决scheme?
谢谢!!
假设你正在提交一个裸露的/共享的repo,那么为每个服务器添加一个post-receive钩子到ssh非常简单,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来监视回购的变化,并在其他节点上运行作业来更新他们的工作目录,或者使用诸如Puppet / Chef之类的东西来pipe理你的configuration并根据需要更新configuration。
也许sparkleshare适合您的需求?
从它的网站:
它是如何工作的?
SparkleShare在您的计算机上创build一个特殊的文件夹。 您可以将远程托pipe的文件夹(或“项目”)添加到此文件夹。 当有人添加,删除或编辑文件时,这些项目将自动与主机和所有同行保持同步。