Назад | Перейти на главную страницу

Git Repo для поддержки конфигураций приложений на нескольких серверах

Мне нужно управление версиями в репозитории GIT, конфигурации конкретной платформы, распределенные по нескольким серверам. Учтите, что на каждом из этих серверов совершенно разные конфигурации, при этом приложение одно и то же. Как лучше всего это сделать?

  1. Создайте ветку для каждого сервера

    • repository.git: conf -> [Сервер ветки 1]
    • repository.git: conf -> [Сервер ветки 2]
    • repository.git: conf -> [Сервер ветки N]
    • Примечание: Мне кажется, что этот метод трудно поддерживать, потому что при каждом изменении конфигурации сервера мне нужно создавать дочерние ветки, что сбивает с толку.
  2. Создайте единое репо с разными каталогами для каждого сервера.

    • repository.git: conf / Сервер 1
    • repository.git: conf / Сервер 2
    • repository.git: conf / Сервер N
    • Примечание: Это легко сделать
  3. Создайте репо для каждого сервера

    • репозиторий_1.git: conf
    • репозиторий_2.git: conf
    • repository_N.git: conf
    • Примечание: Этот метод требует, чтобы я создавал ветку для каждого нового сервера.

Есть другие методы, каковы лучшие практики в этом случае? Следует ли мне использовать тот, который мне наиболее удобен?

Ткс,

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 и зафиксировать (что также легко скрипт).