Лучший способ сохранить файлы конфигурации под SVN? - PullRequest
12 голосов
/ 06 октября 2008

Каков наилучший способ сохранить ваши файлы конфигурации (например, httpd.conf, my.cnf, .bashrc ...) под контролем версий? В дополнение к преимуществам управления версиями я хочу, чтобы решение также работало как резервное копирование, чтобы я мог принести новый сервер и извлекать (или экспортировать) файлы конфигурации из SVN напрямую

Хорошо бы сохранить исходный путь файла конфигурации.

Ответы [ 6 ]

4 голосов
/ 06 октября 2008

Я проверяю ревизию моих файлов конфигурации, но вместо svn я использую git (что проще, когда у вас несколько компьютеров). У меня есть сценарий bash (называемый install.sh), также находящийся в хранилище, который либо копирует файлы, либо создает ссылки на них в соответствующих местах на компьютере.

Поэтому, если мне нужно настроить на новом компьютере, я просто делаю git-клон репозитория (что эквивалентно проверке svn) и запускаю мой install.sh, чтобы настроить мои файлы конфигурации в соответствующих местах. Наличие install.sh означает, что я также сохраняю исходный путь к файлам конфигурации, как вы и указали.

2 голосов
/ 06 октября 2008

Вот что я реализовал:

У меня есть сервер, который выполняет rsync всех конфигов в один каталог

У меня rsync работает каждый час для передачи изменений. как только rsync завершит работу, появится скрипт svnautocommit, который выполняет автоматическую фиксацию изменений. Таким образом, я могу вернуться к любому изменению или любой версии, которую я хочу.

Возможно, вам потребуется спланировать структуру каталогов SVN в соответствии с вашими требованиями.

0 голосов
/ 06 октября 2008

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

0 голосов
/ 06 октября 2008

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

И тогда это дерево может быть проверено в любой VCS, которую вы любите.

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

0 голосов
/ 06 октября 2008

Мы используем CVS для хранения конфигов в структуре каталогов, которая является максимально плоской. Эта техника легко распространяется на SVN.

Затем у нас есть Makefile, настроенный для использования экспорта CVS в:

  1. создать копию структуры каталогов CVS без компонентов CVS,
  2. создать структуру каталогов, требуемую для целевой машины, в вашем локальном каталоге, как если бы вы находились в корневом каталоге на целевой машине, например, ./my_cvs_dir/etc/ .. и ./my_cvs_dir/usr/local/newapp/..,
  3. скопировать файлы из структуры CVS в целевую структуру каталогов,
  4. создайте архив для целевой структуры каталогов, а
  5. разверните тарбол на целевой машине.

У нас также есть эти tarballs для увеличения специализации, например Sol10, Apache, конкретные приложения и т. Д.

НТН

ура

Роб

0 голосов
/ 06 октября 2008

Я делаю это на нескольких машинах, начиная от старых коробок Solaris 8 до Mac OS X, и у меня действительно простая компоновка:

В моем хранилище есть следующее:

<root>/common
  /.emacs.d
  /.bash_common
  /scripts # platform-independent binary tools

<root>/linux
  .bashrc
  .emacs
  ...

<root>/solaris
  .bashrc
  .emacs
  ...

<root>/osx
  .bashrc
  .emacs
  ...

Каждый из домашних папок ОС имеет ссылку svn: externals на .emacs.d, .bash_common и сценарии, поэтому они не дублируются.

Кроме того, у меня есть каталог .bash_hostconfig в каталогах linux и solaris с конфигурацией пути, специфичной для хоста, и тому подобное, потому что у меня совсем другие настройки на работе, чем дома (FC5-8 и RHEL3-5, в зависимости на том, где я нахожусь).

Итак, между этими вещами у меня есть довольно простой процесс установки и запуска на новом компьютере: я просто извлекаю платформу / $ во временный каталог, а затем перезаписываю все в $ HOME этими файлами. Мне не нужно сохранять исходный путь, потому что он всегда относительно $ HOME таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...