2017-06-29 151 views
0

選擇一個鍵值需要一定的專業知識幫助,隨機從數組

我想看看是否有一種方法可以隨機挑選從數組做廚師客戶端運行一個屬性。

實施例, 我有這樣的屬性

default['collectors_a'] = { a, b, c, d, e} 

和在配方我想隨機選擇來自陣列此元件中的一個。

有誰知道如何去做呢?

非常感謝您的幫助!

回答

1

所以有一些問題,{...}是針對哈希,而不是數組。在Ruby中,數組字面看起來像[...],如[1, 2, 3]["a", "b", "c"]。這就是說,Array對象上有一個方法可以幫助解決這個問題,Array#sample將從數組中返回一個隨機對象。所以你可能需要像["a", "b", "c"].sample這樣的東西。不過請記住,每次Chef運行時,這都會重新推出選擇,這幾乎不是你想要的。如果你想要的東西,每個服務器隨機但一致的,你可以這樣做,而不是:

vals = ["a", "b", "c"] 
default["whatever"] = vals[node["shard_seed"] % vals.length] 

shard_seed屬性來自Ohai,是基於一些像CPU ID和機器UUID輸入的一致性哈希。

+0

感謝您對@coderanger的幫助,我會試試這個 –