Итак, обобщаю опыт использования svn для синхронизации конфигов.
Шаг 1. Сделать хранилище.
SVN превращает в хранилище любую директорию по команде
svnadmin create /директория
По сути в "директории" будет создана база данных куда будет писаться вся история для путей расположенных ниже "директории". Следовательно, разделение проектов делается примерно так
svnadmin create /svn/host1
svnadmin create /svn/host2
...
Теперь у нас есть хранилище ... в него можно складывать фаилы или вынимать.
Шаг 2. Положить дерево в хранилище
void@host1$ svn import -m "etc init" /etc file://svn/host1/
хорошие новости - можно складывать на удаленную машину
void@host1$ svn import -m "etc init" /etc svn+ssh://base/svn/host1/
где base имя удаленного хоста, /svn папка доступная на запись, /svn/host1 хранилище svn, /svn/host1/etc в какую папку положить
плохие новости - нельзя складывать один файл - только папки.
Шаг 3. Достать дерево из хранилища
void@host2$ cd /
void@host2$ svn co svn+ssh://base/svn/host1/etc
опять же файлы получать нельзя - только целиком дерево.
Вывод: Обновления и история изменений это хорошо, это правильно, это здорово. Но пока ненравится.
4 комментария:
Есть какой-то специальный пакет под Debian именно для этой задачи. Его плюсы в том, что он проинтегрирован с apt и прочая-прочая. При установке или удалении (purge) пакета, apt вызывает скрипт, который вносит изменения в /etc через систему svn.
Как называется - не помню. Не было интересно, поскольку конфиги меняю не часто, а успешные конфигурации фиксирую в блоге.
А вот это дело мне нужно для работы в нескольких линухах и куче фрях. Фишка в том, что конфиги меняются админами по нескольку раз в день и если и оставляют комменты в коде то лучше бы их небыло. А так видно хотя бы кто и что изменил, зачем изменил немогу заставить писать, да и сформулировать они этого внятно немогут ))
Нашёл. Только не svn, а git. Называется etcgit.
Ещё есть etckeeper: http://romanvbabenko.blogspot.com/2008/09/etckeeper.html
Вот за etcgit наводку большое спасибо. Как раз изучал возможность использования git в этих целях.
Отправить комментарий