天天看點

《Puppet實戰手冊》——1.4 利用Git管理配置清單

本節書摘來自異步社群《puppet實戰手冊》一書中的第1章,第1.4節,作者:【英】john arundel著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

把puppet配置清單存放在版本控制系統git或subversion中管理(推薦git),所有puppet管理的機器都從倉庫取出配置,這是一個非常好的想法。它有以下幾個優點。

可以取消對配置清單的更改并復原至以前任意一個版本。

可以使用新的分支(branch)來測試新功能。

如果有多人需要修改配置清單,可以分别獨立在自己的工作副本上進行,然後再合并所有的修改。

可以使用git log功能檢視誰在什麼時候做了什麼修改。

準備工作

本節将導入現有的清單檔案到git倉庫。如果讀者已經在上一節建立了puppet目錄,就使用它;否則,就使用目前的清單目錄。

本書将使用流行的github服務作為本書的git伺服器。不強制讀者這麼做,讀者也可以很容易地運作自己的git伺服器,但github的确簡化了很多事情。如果讀者已經在使用git并有一台合适的伺服器,就可以放心地使用自己的。

《Puppet實戰手冊》——1.4 利用Git管理配置清單

需要注意的是,目前github隻提供公開的免費倉庫(也就是說,每個人都可以看到倉庫裡的puppet配置清單)。當配置清單中有機密資料(如密碼)時,使用github就不是一個好主意。使用本書中的示例來玩一玩,做些實驗還可以,但在生産環境中使用時,需要考慮使用私有的github倉庫來代替。

參照下面的步驟導入配置清單。

1. 首先,在伺服器上安裝git。

<code>ubuntu@cookbook:~/puppet$ sudo apt-get install git</code>

2. 其次,需要一個github賬号(免費的開源項目,或支付少量費用建立私有倉庫)和一個倉庫。按照github.com的說明建立并初始化倉庫(repository),確定勾選了github.com的版權說明initialize this repository with a readme。

3. 授權ssh密鑰來讀/寫倉庫。

操作步驟

現在,将配置清單添加到git倉庫。複制倉庫并移動配置清單檔案到倉庫中,操作步驟如下。

1. 首先,将puppet目錄改名。

<code>mv puppet puppet.import</code>

2. 在伺服器上克隆github上的倉庫到puppet目錄(使用在github上建立的倉庫url,可以在github頁面上擷取)。

3. 将puppet.import目錄下所有檔案移動到puppet目錄。

<code>ubuntu@cookbook:~$ mv puppet.import/* puppet/</code>

4. 添加并送出新的檔案至github倉庫,如果有必要,設定git詳細認證資料。

5. 最後,将變更推送至github。

工作原理

git會跟蹤檔案的變更,并存儲完整的變更曆史記錄。倉庫的曆史記錄由多個送出組成。一次git送出包含使用git commit指令送出時倉庫的狀态和注釋。

現在,已經将puppet配置清單檔案添加到倉庫并建立了第一條送出。這個送出更新了倉庫的曆史,但僅儲存在本地工作副本中。如果要将副本的變化同步到github上,還需要運作git push指令推送所有變更。

更多參考

現在,有一個中心git倉庫來管理puppet配置清單,這樣就可以在不同地方檢出它的副本,修改并送出變更。比如,有一個工作團隊,團隊中每一個成員都可以将這個倉庫複制至本地,并通過github同步他們的修改。

使用git控制puppet的配置清單後,還需要使用一種簡單、可擴充的方式将清單檔案分發至大量的機器。下一節講解如何來實作這些。