Какие существуют решения, позволяющие использовать контроль версий для файлов конфигурации сервера? [closed]

В среде с несколькими системными администраторами я вижу несколько преимуществ добавления файлов конфигурации сервера в систему контроля версий. Наиболее примечательными являются возможность отслеживать изменения, кто их сделал, и, конечно же, возможность откатиться к известным рабочим конфигурациям.

Меня в основном интересуют решения для Unix / Linux, но мне также были бы любопытны реализации для Windows.

85
задан 19 February 2015 в 09:11
12 ответов

Я протестировал это дома (~ 3 хоста) в течение некоторого времени теперь, пробуя другой scms (RCS, Подверсия, мерзавец). Установка, которая работает отлично на меня прямо сейчас, является мерзавцем с setgitperms рычаг.

Вещи необходимо рассмотреть:

Обработка полномочий файла и владения

  • RCS: делает это исходно
  • Подверсия: в последний раз я попробовал, Вам была нужна обертка вокруг svn сделать это
  • мерзавец: setgitperms сцепитесь обрабатывает это прозрачно (нуждается в довольно последней версии мерзавца с поддержкой post-checkout рычаги, хотя)

Кроме того, если Вы не хотите ко всему Вашему /etc при управлении версиями, но только файлах, которые Вы на самом деле изменили (как я), Вам будет нужен scm, который поддерживает этот вид использования.

  • RCS: работы только над единственными файлами так или иначе.
  • Подверсия: Я нашел, что это было хитро.
  • мерзавец: никакой probem, помещенный"*"на верхнем уровне .gitignore файл и добавляет только те файлы, которые Вы хотите использовать git add --force

Наконец, существуют некоторые проблематичные каталоги под /etc где пакеты могут отбросить отрывки конфигурации, которые затем читаются некоторой программой или демоном (/etc/cron.d, /etc/modprobe.d, и т.д.). Некоторые из этих программ достаточно умны для игнорирования файлов RCS (например, крон), некоторые не (например, modprobe). То же самое с .svn каталоги. Снова большое плюс для мерзавца (только создает один верхний уровень .git каталог).

52
ответ дан 28 November 2019 в 19:25
  • 1
    Подверсии нужен asvn svn.collab.net/repos/svn/trunk/contrib/client-side/asvn. Заархивируйте SVN (asvn), позволит запись типов файлов, не обычно обработанных svn. В настоящее время это включает устройства, символьные ссылки и принадлежность файла / полномочия. –  Cristian Ciupitu 19 June 2009 в 22:40
  • 2
    У Вас есть запись, где-нибудь показывающая, как установить рычаги, которые Вы использовали, ect.? –  grufftech 10 July 2009 в 02:18
  • 3
    Короткая рецензия здесь: jottit.com/jg8h7 –  8jean 20 July 2009 в 18:46

Я сделал это неофициально с мерзавцем, но существует также etckeeper проект, который является большим количеством completist и подробной реализацией.

28
ответ дан 28 November 2019 в 19:25

Другая опция состоит в том, чтобы использовать автоматизированный инструмент конфигурирования сервера как Puppet или Cfengine для сценариев конфигураций сервера на декларативном языке.

Это - дополнительная работа над фронтендом, но использование утилиты как Марионетка позволяет Вам автоматически восстанавливать и настраивать сервер с очень небольшим человеческим вмешательством.

23
ответ дан 28 November 2019 в 19:25
  • 1
    Да, но Вы должны также управление версиями Ваши конфигурации Puppet/CFengine. I' m также вентилятор управления пересмотра вывод так, чтобы можно было ответить на вопрос " чем был конфигурация в дату x? " а также " чем конфигурация должна была быть по словам марионетки? " и коррелят вводит с выводами для поиска и устранения неисправностей системы управления конфигурации. –  Rob Chanter 7 May 2009 в 03:34

Я экспериментировал с etckeeper, который, кажется, работает вполне прилично. Я не требую централизованного сервера, который может быть важным в некоторых ситуациях. Можно использовать несколько различных бэкендов DVCS, таким образом, можно выбрать тот, Вы являетесь самыми знакомыми с. Это, кажется, работает очень хорошо на меня, но я не попытался получить другой techs, где я работаю, чтобы начать использовать его все же.

10
ответ дан 28 November 2019 в 19:25

Я нахожусь в процессе реализации Марионетки через нашу инфраструктуру, и это очень способствует хранению ее данных в управлении версиями.

Я предпочитаю Подвижный, так как это - просто набор файлов с некоторыми метаданными, сохраненными в скрытых каталогах (легкий справиться, легкий понять, простой в использовании).

Мои Марионеточные файлы в/usr/local/etc/puppet/(FreeBSD 7.1). Все это взяло для добавления Подвижный к нему:

> cd /usr/local/etc/puppet
> hg init

Все изменения фиксируются с простым "hg фиксация". Если изменение поливает из шланга что-то, я могу откатывать каждый сервер к данной версии файла (скажите, sudoers) с единственной командой.

Большое введение к Подвижному

3
ответ дан 28 November 2019 в 19:25

Я использовал Подверсию на серверах, которыми я управляю. Хорошо работает. Я также настроил экземпляр Trac, таким образом, у нас есть представление временной шкалы, система покупки билетов, просмотр, и т.д.

Используя символьные ссылки, крон и подверсию у меня есть также автоматизированное распределение конфигурации установки на основе репозитория подверсии, где каждый сервер Linux обновляет использование репозитория svn update со сценариями (например, сценариями брандмауэра).

3
ответ дан 28 November 2019 в 19:25

Вот реальный вариант использования: Используемая Подверсия для управления конфигурационными файлами на 4 различных серверах. Я рекомендовал бы использовать управление версиями для конфигурационных файлов по той же причине, Вы будете использовать их с кодом - это - резервное копирование и кнопка отмены все в одном. Если бы я управлял намного большей суммой серверов, и они были намного ближе в терминах на конфигурации, я использовал бы что-то как Марионетка, как детализировано в ответе berberich.

Идея состоит в том, что у Вас может быть один репозиторий, что Вы можете контроль определенные папки на серверах (например,/var/named/) так я и иметь историю и резервное копирование конфигурационных файлов (резервное копирование является премией, если Вы делаете ошибку использования приложения конфигурирования GUI, которое вытирает отредактированные дополнения Вашей руки, кашляют Администратор Сервера при кашле Сервера Mac OS X). Затем легко протестировать его на тестовом сервере и впоследствии обновить рабочий сервер с файлами, которые работают, вручную не копируя файлы.

2
ответ дан 28 November 2019 в 19:25

Я создал проект несколько лет назад, чтобы сделать точно это: Savon

Это использует подверсию, чтобы хранить файлы и имеет некоторые дополнительные функции, как отслеживание владения, полномочий и контекста SELinux. Это также позволяет Вам логически разделять свои изменения файловой системы в слоях, таким образом, можно, например, отследить изменения, которые должны перейти ко всем веб-серверам отдельно.

1
ответ дан 28 November 2019 в 19:25

Подверсию очень легко установить и использовать и существует много ресурсов:

Основное практическое руководство

Книга SVN

Обзор управления документооборотом

0
ответ дан 28 November 2019 в 19:25
  • 1
    Я соглашаюсь, если Вы используете контроль окон tortise svn, его очень простое для использования. –  Element 6 May 2009 в 21:09

Большинством наших изменений управляют с нашей системой Справочной службы, даже для материала типа регламентного техобслуживания. Мы медленно перемещали нашу документацию в Wiki для нашего собственного использования, и что мы публикуем к конечным пользователям. При регистрации изменений конфигурации и обсуждения позади него, хорошо иметь открытый на нашей интранет.

0
ответ дан 28 November 2019 в 19:25

Много лет я использовал rcs для файлов, которые я начал изменять, но несколько лет назад я начал помещать целый / и т.д. под управлением мерзавца. Это требует, чтобы некоторая работа зарегистрировалась в файлах в детализированных объемах (несколько раз, я обращаюсь к огромные "различные обновления" регистрация), и я записал некоторые сценарии для помощи с этим, но упомянутый etckeeper кажется очень интересным, я сразу испытаю.

0
ответ дан 28 November 2019 в 19:25

Я изучал Шеф-повара в последнее время. Мало того, что это сохраняет templatable (.erb) конфигурации в управлении версиями, но позволяет Вам выполнять действия (как перезапуск сервиса после загрузки конфигураций на узел). Шеф-повар помогает с управлением пакетом, таким образом, можно проверить зависимости с любым узлом, с которым Вы соединяете интерфейсом с (т.е. должен иметь sudo установленный пакет). Шеф-повар, кажется, легко расширяем в Ruby, поэтому если у Вас есть какие-либо пользовательские процессы, можно просто написать сценарий его в служившей основе.

Но все еще не попробовали его, и действительно необходимо установить Ruby на клиенте и сервере с соответствующими драгоценными камнями (это действительно не это трудно). Общий вид, действительно легкий управлять многими серверами сразу.

6
ответ дан 28 November 2019 в 19:25

Теги

Похожие вопросы