IT-Expert
  IT-Expert / Веблог / Пример хранения конфигов серверов в SVN (updated)
Авторизация
Логин:
Пароль:


 
Поиск по записям:

Ключевые слова:
Записей в блоге
 за 2023 год
 за 2022 год
 за 2021 год
 за 2015 год
 за 2014 год
 за 2013 год
 за 2012 год
 за 2011 год

     за 2010 год

       за 2009 год
       за 2008 год
       за 2007 год
       за 2006 год
       за 2005 год
      RSS лента Лента новостей IT-Expert 

      Пример хранения конфигов серверов в SVN (updated)

      10:46, 15 июня 2006 ( Administration FreeBSD  )

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


      Рассмотрим случай, когда есть три сервера, colo, gate-vasil и gate-vasil2, задача - забекапить /usr/local/etc и восстановить на другом сервере.

      Для начала воспользуемся  статьей http://www.opennet.ru/docs/RUS/blfs6/server/svnserver.html для разворачивания svn сервера на хосте colo (я пока делал в тестовых целях без ssh, с минимумом защищенности).

      После того как сервер svn создан и запущен займемся созданием репозитория для хранения конфигов.
      Допустим сервер svn хоста colo настроен на хранение репозиториев в /usr/local/repositories.

      colo# cd /usr/local/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 для сохранения измененй

      Удачи! 

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

      А вот действительно взросложе решение для управления конфигами в больших сетях: cfengine.

       

             cfengine  is  a language based system specifically designed for testing
      and configuring unix-like systems attached to a TCP/IP network. You can
      think of cfengine as a very high level language -- much higher level
      than Perl or shell. A single statement can result in many hundreds of
      links being created, or the permissions of many hundreds of files being
      set. The idea of cfenginge is to create a single file or set of config
      uration files which will describe the setup of every host on your net-
      work.

      cfagent runs on every host and parses one file (or file-set), the con-
      figuration of the host is checked against this file and, if desired,
      any deviations are fixed. cfagent reads a configuration file called
      cfengine.conf in a directory pointed to by the environment variable
      CFINPUTS. cfagent performs host integrity and security checks as
      installing and repairing system configuration.
       

       


      Оставить комментарий
      © Максим Прокопов 2005-2024 О сервере