Git Repo для поддержки конфигурации приложений на нескольких серверах
Мне нужно для управления версиями в GIT-репозитории, конфигураций конкретной платформы, распределенных по нескольким серверам. Примите во внимание, что на каждом из этих серверов есть совершенно разные конфигурации, а приложение одинаково. Каков наилучший способ сделать это?
Создать ветку для каждого сервера
- repository.git: conf -> [Сервер филиала 1]
- repository.git: conf -> [Сервер филиала 2]
- repository.git: conf -> [Сервер филиала N]
- Примечание: этот метод мне кажется сложным в обслуживании, потому что при каждом изменении конфигурации сервера мне нужно создавать подветвления, что приводит к путанице.
Создайте одно хранилище с разными каталогами для каждого сервера
- repository.git: conf / Сервер 1
- repository.git:conf/Server 2
- repository.git: conf / Сервер N
- Примечание: это легко поддерживать
Создать репо для каждого сервера
- repository_1.git: конф
- repository_2.git: конф
- repository_N.git: конф
- Примечание. Этот метод требует от меня создания ветки для каждого нового сервера.
Есть другие методы, каковы лучшие практики в этом случае? Должен ли я использовать тот, который я чувствую себя наиболее комфортно?
Tks,
Гулден П.Т.
2 ответа
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 также решают ту же проблему. Шеф-повар, по крайней мере, был построен с намерением или ожиданием того, что конфигурации будут храниться в системе контроля версий.
Однако, не восстанавливая свою инфраструктуру, вам, вероятно, следует выполнить сценарий копирования отдельных файлов конфигурации в общий каталог, убедиться, что если файлы не названы самоочевидными, поместите их в папку с чувственным именем и оберните в имени сервера.
Так:
--networkDrive
----ServerName1
------WebServerConfig
------AppServerConfig
----ServerName
------AnotherAppConfig
----ServerName
...и так далее...
Оттуда его легко собрать и зафиксировать (что также легко в скриптах).