天天看點

《Puppet實戰手冊》——2.2 使用社群推薦的Puppet風格

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

如果其他人需要閱讀或維護你的配置清單,或者如果讀者想通過社群分享自己的代碼,那麼盡可能密切地按照現有風格、規範進行代碼編寫會是一個很好的主意。這些會在代碼的布局、間距、引号、對齊方式和變量引用等方面進行限制,puppet實驗室官方在風格上的建議可以參考<code>http://docs.puppetlabs.com/guides/style_guide</code>。

工作原理

本節會向讀者展示一些更加重要的例子,以及如何確定代碼是遵循風格規範的。

縮進

配置清單中使用兩個空格(不要使用tab)進行縮進,可參考下面的代碼:

引号

資源名字要始終使用引号注明,如下:

<code>package { 'exim4':</code>

而非如下所示:

<code>package { exim4:</code>

所有的字元串都使用單引号,除非:

字元串中引用了變量(如${name});

字元串中包含了轉義序列(如n)。

在這些情況下,應該使用雙引号。除非變量引用或轉義序列在雙引号内,否則puppet會不處理它們。

在puppet中要始終将非保留字的參數值用引号引起來。例如,下面的值都是非保留字:

但是,下面這些為保留字的參數值則不需要引号:

變量

當字元串中引入變量時,要確定它們的名字被大括号({})括起來,如下:

<code>source =&gt; "puppet:///modules/webserver/${brand}.conf",</code>

否則,puppet的文法分析器就不得不猜測哪些字元是變量名,哪些屬于外圍的字元串。而大括号能夠幫助文法分析器明确這些語義。

參數

確定在聲明參數的行尾加上逗号,即便在最後一個參數的行尾。

這種方式是puppet允許的,并且它會在使用者将來增加參數或是調整參數順序時變得更加容易。

當聲明一個僅僅帶有一個參數的資源時,要把全部聲明寫在一行,并且不要在參數行尾添加逗号。

··package { 'puppet': ensure =&gt; installed }··

而在那些多個參數的聲明代碼中,需要讓每一個參數各占據一行。

為了使代碼更容易閱讀,所有的參數箭頭要與最長參數名所在行的參數箭頭對齊,如下所示:

箭頭對齊應該在每個資源内部保持一緻,而不是在整個檔案中,否則會使使用者難以從一個檔案中剪切代碼粘貼到另一個檔案。

符号連結

當聲明的file資源是符号連結這種類型時,要設定ensure =&gt; link及target屬性,如下所示:

更多參考

當存在多人同時操作代碼庫時,很容易因為風格不一緻而導緻混亂。幸運的是,有一個工具可以自動檢查代碼是否符合風格指南,這個工具就是puppet-lint。在下一節,讀者将看到如何使用這個工具。