2013-09-27 23 views
2

我有一個從廚師搜索返回的節點列表,它將用於創建配置文件。這些節點需要訂購,因爲如何從廚師搜索中排序節點?

  1. 該軟件的配置文件是需要這些節點是爲了
  2. 廚師並不總是返回節點以相同的順序,因此該文件將每次被改寫即使配置保持不變,廚師仍可以運行。
+0

#2是一個非常常見的廚師反模式,可以導致大量不必要的服務啓動。 –

回答

5

要創建的屬性來分類的節點列表,你會做這樣的事情,它通過其域名對節點排序:

nodes = search(:node, "fqdn:*") 
nodes.sort_by!{ |n| n[:fqdn] } 

只返回這些屬性的列表,這可能與擴展:

nodes.map!{ |n| n[:fqdn] } 

在較新版本的廚師,:filter_result可用於僅提取將要使用的節點屬性:

nodes = search(:node, "fqdn:*", filter_result: { fqdn: [:fqdn] }) 
nodes.map! { |node| node[:fqdn] } 
nodes.sort! 
+0

使用filter_result會比nodes.map更好,因爲它可以節省帶寬。 –