天天看點

《Puppet實戰手冊》——2.6 使用内聯模闆

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

模闆是一種使用嵌入式ruby來幫助使用者動态(如通過周遊數組)地建立配置檔案的強大的方式。但是,使用者仍然可以在清單中直接通過inline_template函數嵌入ruby代碼,而無須建立單獨的模闆檔案。

操作步驟

下面是一個使用inline_template的例子。

在puppet配置清單中将ruby代碼傳遞給inline_template函數,如下所示:

工作原理

任何傳遞給inline_template函數的字元串的内容都會被當作erb模闆來執行。也就是說,任何在<%=和%>分隔符之間的内容都将作為ruby代碼而執行,而其餘的部分将被視為字元串。

在這個例子中,使用inline_template來為每一台機器上的cron(一種排程作業)資源計算不同的執行時刻,以至于同樣的作業不會同時在所有的機器上運作。要了解更多關于此技術,可參見5.6節。

更多參考

在erb代碼中,無論是在模闆檔案的内還是在inline_template的參數字元串中,隻要它們是在目前作用域内有效,都可以直接通過字首@加名稱的方式通路puppet變量。

<code>&lt;%= @name %&gt;</code>

如果它們在其他作用域中,那麼可以使用scope.lookupvar來引用它們,如下所示。

應該謹慎地使用内聯模闆。如果一定要在配置清單中實作一些複雜的邏輯,可以考慮使用自定義函數來代替内聯模闆(見8.14節)。