2014-05-14 28 views
0

我正試圖實現以下功能。 - 我有一些變量在hiera yaml中爲a.yaml定義 - 我想從外部事實中讀取一些變量。 - 然而,無論何時未定義外部事實,我都想使用一些默認值。hiera yaml中可以有條件嗎?

因此,例如

--- 
key1: value1 
key2: %{value2_from_facts} | value2 

在自定義是否事實「value2fromfacts」沒有定義這種情況下,我想KEY2有值2。這可能嗎?

如果所使用的事實沒有解決,是否有更好的替代方案將默認值分配給hiera變量?

回答

1

我不認爲Hiera提供了有關這種情況的好方法。我建議在清單級別解決這個問題,例如

if $factvalue { 
    $myvalue = $factvalue 
} 
else { 
    $myvalue = hiera('key2') 
} 

模塊化這一點,創建一個parser function認爲應該像

my_hiera($factvalue,'key2') 

用身體像

override = args.shift 
if override.empty? 
    # duplicate hiera() 
    key, default, override = HieraPuppet.parse_args(args) 
    HieraPuppet.lookup(key, default, self, override, :priority) 
else 
    override 
end 

這是完全未經測試,應該只作爲一般的草圖理念。

+0

感謝Felix的建議,但我想避免if/else,因爲我有很多參數。 –

+0

我看到了...我將添加一個使用自定義函數的替代方案。 –