在版本控制下保存配置文件(例如httpd.conf,my.cnf,.bashrc ...)的最佳方法是什麼? 在ADITION的版本效益,我想解決備份工作爲好,這樣我就可以帶來一個全新的服務器和結算(或出口)的配置文件從SVN直接保持配置文件在SVN下的最佳方式?
良好的觸感會以保存配置文件的原始路徑。
在版本控制下保存配置文件(例如httpd.conf,my.cnf,.bashrc ...)的最佳方法是什麼? 在ADITION的版本效益,我想解決備份工作爲好,這樣我就可以帶來一個全新的服務器和結算(或出口)的配置文件從SVN直接保持配置文件在SVN下的最佳方式?
良好的觸感會以保存配置文件的原始路徑。
我做了幾臺機器,從舊的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。
我修改 - 控制我的配置文件,但我用git而不是svn(當你有多臺機器時這更容易)。我有一個bash腳本(稱爲install.sh
),也位於存儲庫下,它將文件複製或符號鏈接到機器上適當的位置。因此,如果我需要在新機器上設置,我只需做一個倉庫的git克隆(相當於一個svn結賬),然後運行我的install.sh
以在適當的位置設置我的配置文件。有install.sh
左右意味着我也存儲配置文件的原始路徑,正如你所表示的你想要的。
我們使用CVS將配置存儲在儘可能平坦的目錄結構中。這項技術很容易擴展到SVN。
然後我們有一個Makefile文件設置爲使用CVS出口到:
我們也有這些tarball成立於日益專業化的領域, Sol10,Apache,特定應用程序等。
HTH
歡呼聲,
羅布
那麼你可以存儲特定的目錄樹下所有的配置文件,每個應用程序一個子目錄。由於大多數應用程序都應該有一個指令來指定配置路徑,因此每個服務器都是唯一需要改變的地方(或者如果你有硬編碼的配置文件,也許支持include這樣的東西)。
然後可以將此樹檢入到您喜歡的任何VCS中。
對於部署,您可以編寫一個shell腳本或一個初始化所有內容以使用您的配置文件樹的東西。
這是我已經實現:
我做所有的configs的rsync的到一個目錄(比如/數據/ CONFIGS /主機名/ {等的httpd}服務器
我有。一個每小時運行一次的rsync傳輸更改,只要rsync完成,就有一個svnautocommit腳本可以自動提交更改。這樣,我可以回滾到任何更改或任何我想要的版本。您可能需要根據您的要求規劃SVN目錄結構。
正如你想要一箇中央商店無論如何,你可能會去稍微複雜一些像Slack。您在推送服務器上管理和版本控制文件,然後將其rsync同步到客戶端。 explanation of subroles有一些關於如何構建樹的例子。
使用這種方法,你能夠提交更改並使用`git diff`作爲你的配置文件嗎?或者您的目標更多隻是爲了幫助部署? – Tom 2010-03-09 09:00:24