2008-10-06 85 views
12

在版本控制下保存配置文件(例如httpd.conf,my.cnf,.bashrc ...)的最佳方法是什麼? 在ADITION的版本效益,我想解決備份工作爲好,這樣我就可以帶來一個全新的服務器和結算(或出口)的配置文件從SVN直接保持配置文件在SVN下的最佳方式?

良好的觸感會以保存配置文件的原始路徑。

回答

0

我做了幾臺機器,從舊的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:外部引用.emacs.d,.bash_common和腳本,所以這些不重複。另外,我在linux和solaris目錄中有一個.bash_hostconfig,並配置了特定於主機的路徑配置等,因爲我在工作上的設置與我在家中的設置非常不同(FC5-8和RHEL3-5,取決於我在哪裏)。因此,在這些事情之間,我有一個非常簡單的過程用於在新機器上啓動和運行:我只需將/ $ platform檢出到一個臨時目錄中,然後用這些文件覆蓋$ HOME中的所有內容。我不需要存儲原始路徑,因爲它總是以這種方式相對於$ HOME。

4

我修改 - 控制我的配置文件,但我用git而不是svn(當你有多臺機器時這更容易)。我有一個bash腳本(稱爲install.sh),也位於存儲庫下,它將文件複製或符號鏈接到機器上適當的位置。因此,如果我需要在新機器上設置,我只需做一個倉庫的git克隆(相當於一個svn結賬),然後運行我的install.sh以在適當的位置設置我的配置文件。有install.sh左右意味着我也存儲配置文件的原始路徑,正如你所表示的你想要的。

+2

使用這種方法,你能夠提交更改並使用`git diff`作爲你的配置文件嗎?或者您的目標更多隻是爲了幫助部署? – Tom 2010-03-09 09:00:24

0

我們使用CVS將配置存儲在儘可能平坦的目錄結構中。這項技術很容易擴展到SVN。

然後我們有一個Makefile文件設置爲使用CVS出口到:

  1. 創建CVS目錄結構的副本沒有的CVS組件,
  2. 在創建目標機器所需的目錄結構的本地目錄,就好像你在目標機器上的根目錄一樣,例如./my_cvs_dir/etc/ ..和./my_cvs_dir/usr/local/newapp/..,
  3. 將文件從CVS結構到目標目錄結構複製,
  4. 創建目標目錄結構的壓縮包,和
  5. 將壓縮包部署到目標機器上。

我們也有這些tarball成立於日益專業化的領域, Sol10,Apache,特定應用程序等。

HTH

歡呼聲,

羅布

0

那麼你可以存儲特定的目錄樹下所有的配置文件,每個應用程序一個子目錄。由於大多數應用程序都應該有一個指令來指定配置路徑,因此每個服務器都是唯一需要改變的地方(或者如果你有硬編碼的配置文件,也許支持include這樣的東西)。

然後可以將此樹檢入到您喜歡的任何VCS中。

對於部署,您可以編寫一個shell腳本或一個初始化所有內容以使用您的配置文件樹的東西。

2

這是我已經實現:

我做所有的configs的rsync的到一個目錄(比如/數據/ CONFIGS /主機名/ {等的httpd}服務器

我有。一個每小時運行一次的rsync傳輸更改,只要rsync完成,就有一個svnautocommit腳本可以自動提交更改。這樣,我可以回滾到任何更改或任何我想要的版本。您可能需要根據您的要求規劃SVN目錄結構。

0

正如你想要一箇中央商店無論如何,你可能會去稍微複雜一些像Slack。您在推送服務器上管理和版本控制文件,然後將其rsync同步到客戶端。 explanation of subroles有一些關於如何構建樹的例子。

相關問題