天天看點

《Puppet實戰手冊》——1.5 建立去中心化Puppet架構

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

有些系統分散管理時會工作得更好。

使用puppet最常見的方法就是運作一台puppet master伺服器,puppet用戶端連接配接到puppet master并接收各自的配置清單。然而,puppet master并不是必需的,可以直接在配置清單檔案上運作puppet apply指令來應用變更。

換句話說,如果能安排适當的清單檔案分發至用戶端上,就可以使用puppet直接執行而不需要通過puppet master來控制。這将消除由于僅有一台主伺服器導緻的性能瓶頸,也消除了單點故障。同時,這也避免了添加新的用戶端時頒發ssl簽名證書的問題。

有很多方法可以将清單檔案分發至用戶端,但是git(或其他版本控制系統)為此做了大量工作。使用者可以在本地副本中編輯清單,然後送出至git,并推送至中心倉庫。在那裡,它們會自動分發至用戶端。

準備工作

如果puppet配置清單沒有存放在git中,參考上面步驟将清單加入git中管理。

此時,需要第二台機器來檢出puppet倉庫的副本。如果使用ec2執行個體,則建立另一個執行個體,并給它取個主機名,如cookbook2。

操作步驟

具體步驟如下。

1. 在新機器上檢出github倉庫。

2. 參照下面的内容,修改manifests/nodes.pp檔案:

3. 運作以下指令:

工作原理

新機器上已經建立了一個puppet倉庫的副本。

在運作puppet前,必須首先在配置清單中針對cookboo2建立節點聲明。

現在應用這些配置清單,讓它們生效。

<code>ubuntu@cookbook2:~/puppet$ sudo puppet apply manifests/site.pp</code>

puppet找到cookbook2的節點聲明,并應用與之前用于cookbook相同的配置清單:

更多參考

此處已經将puppet基礎設施從一台機器擴充到了另外一台,現在可以将其擴充到任意多台。隻需要檢出git倉庫,并執行puppet apply指令。

這是一個非常好的方法,不需要複雜的配置,也不用多餘的機器作為puppet master,就可以将現在的機器交由puppet管理。筆者的很多客戶都已經使用了這種基于git的基礎設施,它簡單、易于擴充和維護。

需要考慮的一個改進就是要讓每台機器自動從github拉取修改并使用puppet應用這些修改。然後要做的就隻是推送變更至github,變更的内容就會在某一個時間部署至所有puppet管理的機器。接下來,讀者将在下一節看到如何做到這一點。