Мне нужно управление версиями в репозитории GIT, конфигурации конкретной платформы, распределенные по нескольким серверам. Учтите, что на каждом из этих серверов совершенно разные конфигурации, при этом приложение одно и то же. Как лучше всего это сделать?
Создайте ветку для каждого сервера
Создайте единое репо с разными каталогами для каждого сервера.
Создайте репо для каждого сервера
Есть другие методы, каковы лучшие практики в этом случае? Следует ли мне использовать тот, который мне наиболее удобен?
Ткс,
Gulden PT
Bcfg2 - отличная система управления конфигурацией, которую можно использовать с любой системой контроля версий.
Я использую один репозиторий для всех управляемых мной систем. Bcfg2 обрабатывает различия в файлах конфигурации для разных компьютеров и групп, добавляя имя хоста или имя группы с приоритетом к имени файла. Bcfg2 предоставляет вашей системе наиболее специфичный файл для каждой записи ConfigFile.
Итак, в описании конфигурации у вас будет:
<ConfigFile name="/etc/network/interfaces" />
и ваши файлы конфигурации будут:
# ls Cfg/etc/network/interfaces
interfaces
interfaces.H_server1
interfaces.H_server2
Основное преимущество Bcfg2 перед Puppet и Cfengine заключается в том, что вместо запуска сценариев для настройки вашей системы, Bcfg2 определяет, насколько ваша система не соответствует вашей спецификации, и вносит необходимые изменения.
Собственно, самый простой способ - запустить все через инструмент управления конфигурацией. Я предпочитаю Chef, но Puppet и cfengine также решают ту же проблему. Chef, по крайней мере, был создан с намерением или ожиданием, что конфигурации будут храниться в системе контроля версий.
Однако, не переделывая свою инфраструктуру, вам, вероятно, следует создать сценарий для копирования ваших отдельных файлов конфигурации в общий каталог, убедиться, что, если файлы не названы самоочевидными, оберните их в папку с разумным именем и оберните это в имени сервера.
Так:
--networkDrive
----ServerName1
------WebServerConfig
------AppServerConfig
----ServerName
------AnotherAppConfig
----ServerName
...и так далее...
Оттуда легко сделать git и зафиксировать (что также легко скрипт).