2015-06-07 81 views
10

我在支柱文檔中看到有兩種方法可以參考SLS中的支柱數據。我是否應該一直使用pillar.get而不是支柱['foo']?

{{ pillar['foo'] }} 

{{ salt['pillar.get']('foo') }} 

的pillar.get方法處理嵌套支柱數據較好,並允許如果數據未在支柱中指定一個默認值。但是它有點打字,我發現第一種方法更容易閱讀。

因此,是否始終使用pillar.get方法或使用支柱['foo']是可接受的,尤其是在處理非嵌套支柱數據時,被認爲是最佳實踐。

我懷疑總是使用pillar.get方法是最好的,因爲在處理嵌套支柱數據時使用它或您想設置默認值是有意義的。最好只有你一個方法一致。但我想要得到別人的想法。

Thansk, 喬

回答

6

我同意較短的語法看起來更好。

在我構建的狀態中,我傾向於使用{{ pillar['foo'] }}語法,因爲我引用絕對必須存在的值才能使狀態正常工作。在那種情況下,我確實希望發生失敗。

然後用其他值我需要遍歷嵌套的數據,或者如果我想使用默認值,我使用更長的語法。

最後,這主要是個人偏好。沒有一個比另一個更正確。

1

您希望使用pillar.get的原因是因爲您可以指定默認情況,以防柱體無法獲取任何內容。

salt['pillar.get']('element', 'default') 
10

我使用pillar['foo']作爲「required」選項,猶如Utah_Dave所說。我使用salt['pillar.get']('foo', 'default')來選擇具有理智默認的選項。還有其他一些有趣的變化。

一個是salt['defaults.get']('foo'),它允許你保持你的狀態的默認值在一個單獨的文件。如果您有很多可能的支柱變量,這些變量非常有用,其中大部分或全部都有默認值。

第二是它能夠別名salt['pillar.get'](和相同的排序的其它功能),使得它們不太令人討厭的輸入和閱讀:

{%- set pget = salt['pillar.get'] %} 
{%- set dget = salt['defaults.get'] %} 
{%- set mget = salt['mine.get'] %} 
{{ pget("foo1", "default1") }} 
{{ pget("foo2", "default2") }} 
{{ dget("foo3") }} 
{{ dget("foo4") }} 
...and so on. 

即在特定最後變化(DGET )在高度可定製的狀態下爲可讀性創造奇蹟。

+0

感謝您的回覆。我喜歡你,但我還不能。 – NimbusScale

+0

pget線幾乎用在我的所有配置中,並且是非常有用的樣板。 – umeboshi

相關問題