Итак, в нашей среде мы используем специальную сборку Zabbix в качестве решения для мониторинга. Мы развернули Zabbix на четырех разных сайтах и хотели бы убедиться, что сборка согласована на всех четырех сайтах.
Пока что у нас есть репозиторий Git, содержащий копию нашей сборки Zabbix, которая автоматически обновляется каждую ночь через cron.
Однако я бы хотел покончить с задачей cron и настроить своего рода механизм «автоматической синхронизации», согласно которому, как только кто-то выполняет git push на одном узле, все другие узлы выполняют git pull без вмешательства со стороны Пользователь.
Кто-нибудь слышал, возможно, о драйвере FUSE, который может предоставить эту функцию? или какое-то другое решение?
Спасибо!!
Предполагая, что вы выполняете голое / общее репо, довольно просто добавить обработчик 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
вместо тяги.
Некоторые другие варианты включают использование Jenkins для отслеживания изменений в репозитории и запуск задания на других узлах для обновления их рабочих каталогов или использование чего-то вроде Puppet / Chef для управления вашими конфигурациями и обновления конфигураций по мере необходимости.
может быть искриться соответствует вашим потребностям?
со своего сайта:
Как это работает?
SparkleShare создает на вашем компьютере специальную папку. Вы можете добавлять в эту папку удаленно размещенные папки (или «проекты»). Эти проекты будут автоматически синхронизироваться как с хостом, так и со всеми вашими коллегами, когда кто-то добавляет, удаляет или редактирует файл.