天天看點

《Puppet實戰手冊》——2.5 使用标準的命名約定

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

為子產品和類選擇合适的和翔實的名稱将為維護代碼提供很大的幫助。如果其他人需要閱讀和使用你的配置清單,更是如此。

操作步驟

下面是關于如何在配置清單中進行命名的一些技巧。

1. 以所管理的軟體或服務為子產品命名,如apache或haproxy。

2. 以提供的功能或服務為子產品中的類命名,如apache::vhosts或rails::dependencies。

3. 如果子產品中的一個類是為了禁用該子產品提供的服務,可将其命名為disabled。例如,一個禁用apache的類應該名為apache::disabled。

4. 如果一個節點提供多個服務,需要在節點定義中為每個服務包含一個子產品或類,如下:

5. 用于管理使用者的子產品應命名為user。

6. 在user子產品中,可在user::virtual類中聲明虛拟使用者(更多關于虛拟使用者和其他資源,參見5.2節)。

7. 在user子產品中,用于特定使用者組的子類應以組命名,如user::sysadmins或者user::contractors。

8. 如果需要為某些特定節點或服務重寫一個類(配置),可以把子類的名字作為字首來繼承那個類。例如,如果cartman節點(伺服器)需要一個特殊的ssh配置,并且希望覆寫的之前的ssh類,可按如下所示進行操作。

9. 當使用puppet為不同的服務部署配置檔案時,應該以該服務為名命名配置檔案,通過使用的字尾來表明它是什麼樣的檔案,具體示例如下。

apache初始化腳本:apache.init。

rails的logrotate配置片段: rails.logrotate。

mywizzoapp的nginx vhost檔案:mywizzoapp.vhost.nginx。

獨立伺服器的mysql配置:standalone.mysql。

10.如果需要根據作業系統的不同發行版部署一個檔案的不同版本,那麼可以使用一個類似這樣的命名約定。

11.可以通過下面的方式讓puppet自動選擇合适的版本:

12.如果需要管理不同版本的ruby,根據它(puppet類)管理的ruby版本号為類命名是比較适合的,如ruby192或ruby186。

更多參考

puppet社群維護着一套關于如何建設好puppet基礎設施的最佳實踐準則,其中包括關于命名規範的一些提示:<code>http://docs.puppetlabs.com/guides/best_practices.html</code>。

有些人更喜歡用逗号分隔清單的方式在一個節點上包含多個類,而不是使用單獨的include語句,如下:

這和風格有一些關系,但筆者更喜歡使用單獨的include語句,一行一個,因為它可以更容易地在節點(伺服器)之間複制和移動類中包含的内容,而不必每次整理逗号和縮進。

本書在前面一系列例子中提到過繼承,如果不知道繼承是什麼,不用擔心,下一章會詳細交代。

繼續閱讀