Ключевые слова:cvs, svn, subversion, config, freebsd, (найти похожие документы)
From: Nexus <nexus@REMOVE-THIS-FAKE.it-link.com.ua.>
Date: Sun, 23 Feb 2008 17:02:14 +0000 (UTC)
Subject: Пример хранения файлов конфигурации серверов в SVN
Оригинал: http://it-expert.com.ua/weblog/message/461/
SVN оказалась очень и очень удобной штукой для хранения конфигов
серверов в едином репозитарии. Типичные случаи - развернуть те же
настройки bash и screen на новом FreeBSD сервере, что и на остальных,
или восстановить рабочий конфиг после неверных изменений, которые
привели к неработоспособности какого-либо сервиса.
Рассмотрим случай, когда есть три сервера, colo, gate-vasil и
gate-vasil2, задача - забекапить /usr/local/etc и восстановить на
другом сервере.
Для начала воспользуемся статьей
http://www.opennet.dev/docs/RUS/blfs6/server/svnserver.html для
разворачивания svn сервера на хосте colo (я пока делал в тестовых
целях без ssh, с минимумом защищенности).
После того как сервер svn создан и запущен займеся созданием
репозитария для хранения конфигов.
Допустим сервер svn хоста colo настроен на хранение репозитариев в
/usr/local/repositories.
colo# cd /usr/local/etc/repositories
colo# mkdir conf
colo# svnadmin create conf
после этого в нашем распоряжении созданный репозитарий, к которому мы
сможем обращаться через url svn://colo/conf
colo# cd #создадим стру-ру подкаталогов (пока в домашней директории,затем среплицируем в svn)
colo# svn checkout svn://colo/conf
colo# mkdir gate-vasil
colo# mkdir gate-vasil/etc
colo# mkdir gate-vasil/usr/local/etc
colo# svn add gate-vasil ## рекурсивное добавление стр-ры
colo# svn commit -m mycomment ## записываем изменения на сервере svn
Вот пример как добавить /usr/local/etc сервера gate-vasil в хранилище
gate-vasil# cd /usr/local
gate-vasil# svn import etc svn://colo/gate-vasil/usr/local/etc ## рекурсивно проимпортирует дир-рии /usr/local/etc
или второй вариант
gate-vasil# cd /usr/local
gate-vasil# svn checkout svn://colo/gate-vasil/usr/local/etc
gate-vasil# cd etc
gate-vasil# svn add myconfigdir
gate-vasil# svn add -N myconfigdir2 ## ключ -N позволит не добавлять рекурсивно все содержимое каталога, а лишь сам каталог
gate-vasil# svn commit -m mycomment ## коммитим содержимое
Ну и, например, как же восстановить конфигурацию на каком-либо другом
сервере?
в шелл на gate-vasil2
gate-vasil2# cd /usr/local
gate-vasil2# svn checkout svn://colo/gate-vasil/usr/local/etc
На что стоит обратить внимание.
* необходимо поиграться с путями svn для четкого понимания процесса
* не забывать делать commit для сохранения измененй
> * не забывать делать commit для сохранения измененй
Чтобы не "забывать" я использую мейкфайлы, в которых в качестве одной из "целей" указан коммит, а в качестве другой - перезапуск приложения для воспринятия изменений в конфигах.
.DEFAULT = all
all: cvs_commit restart
CVSROOT=/home/cvsroot
cvs_commit:
@cd ./primary
@echo "Commit changes to local cvs repository"
@echo "Using CVSROOT = ${CVSROOT}"
@cvs -d ${CVSROOT} ci -m "commit last changes"