Лучший способ сохранить файлы конфигурации под SVN?
Каков наилучший способ сохранить файлы конфигурации (например, httpd.conf, my.cnf,.bashrc...) под управлением версиями?
В дополнение к преимуществам управления версиями я хочу, чтобы решение работало как резервное копирование, так что я могу принести новый сервер и проверить (или экспортировать) файлы конфигурации из SVN напрямую
Хорошим моментом будет сохранение исходного пути файла config.
Ответы
Ответ 1
Я ревизор-контроль моих файлов конфигурации, но я использую git вместо svn (что проще, когда у вас несколько компьютеров), У меня есть bash script (называемый install.sh
), также находящийся в репозитории, который либо копирует, либо символизирует файлы в соответствующее место на машине.
Итак, если мне нужно настроить новую машину, я просто создаю клон git репозитория (что эквивалентно проверке svn) и запустите мой install.sh
, чтобы настроить мои файлы конфигурации в соответствующем местах. Если install.sh
around означает, что я также сохраняю исходный путь к файлам конфигурационных файлов, как вы указали, вы хотели бы.
Ответ 2
Это то, что я реализовал:
У меня есть сервер, который выполняет rsync всех конфигураций в один каталог (например/data/configs/hostname/{и т.д., httpd}.
У меня rsync работает каждый час, чтобы перенести изменения. как только rsync будет завершен, есть svnautocommit script, который выполняет автообновление изменений. Таким образом, я могу вернуться к любому изменению или любой версии, которую я хочу.
Возможно, вам потребуется запланировать структуру каталогов SVN на основе ваших требований.
Ответ 3
Я делаю это для нескольких машин, начиная от старых ящиков 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
...
Каждый из homedirs ОС имеет ссылку svn: externals на .emacs.d,.bash_common и скрипты, поэтому они не дублируются.
Кроме того, у меня есть .bash_hostconfig в каталогах linux и solaris с настройкой пути к конкретному хосту и тому подобное, потому что у меня совсем другая настройка на работе, чем у меня дома (FC5-8 и RHEL3-5, в зависимости от где я есть).
Итак, между этими вещами у меня есть довольно простой процесс для запуска и запуска на новом компьютере: я просто проверяю платформу/$во временный каталог, а затем перезаписываю все в $HOME этими файлами. Мне не нужно сохранять исходный путь, потому что он всегда относится к $HOME таким образом.
Ответ 4
Мы используем CVS для хранения конфигураций в структуре каталога, которая является как можно более плоской. Этот метод легко распространяется на SVN.
Затем мы создаем Makefile, чтобы использовать экспорт CVS для:
- создать копию структуры каталога CVS без компонентов CVS,
- создать структуру каталогов, необходимую для целевой машины в вашем локальном каталоге, как если бы вы были в корневом каталоге на целевой машине, например.. /my _cvs_dir/etc/.. и./my_cvs_dir/usr/local/newapp/..,
- скопировать файлы из структуры CVS в структуру целевой директории,
- создать tarball для целевой структуры каталогов и
- Разверните tarball на целевой машине.
У нас также есть эти tarballs, созданные в возрастающей специализации, например. Sol10, Apache, конкретные приложения и т.д.
НТН
веселит,
Роб
Ответ 5
Ну, вы можете хранить все файлы конфигурации под определенным деревом каталогов, одним поддиректоном для каждого приложения. Поскольку большинство приложений должны иметь директиву для указания пути к конфигурации, это единственное, что нужно изменить (или если у вас есть жестко закодированные файлы конфигурации, возможно, что-то вроде include поддерживается) на сервер.
И это дерево можно было бы проверить в любом VCS, который вам нравится.
Для развертывания вы можете написать оболочку script или такую вещь, которая инициализирует все, чтобы использовать ваше дерево файлов конфигурации.
Ответ 6
Как вы хотите, центральный магазин в любом случае, вы можете пойти на что-то более сложное, например Slack, Вы управляете и управляете версиями файлов на push-сервере, а затем rsync его клиентам. объяснение подстроек содержит несколько примеров того, как структурировать дерево.