2017-04-25 43 views
0

我正在寫一個HWRP,我需要訪問客戶端運行期間將會聚的所有配方。 我正在使用node.run_list.recipe_names來訪問此。但似乎是而不是包括通過角色設置的食譜。如何訪問廚師的run_list的所有食譜?

For example, I have a node with run_list 
role[role1] that has cookbook1::recipe2 
role[role2] that has cookbook2::recipe1 
cookbook3::recipe1 
cookbook4::default 

如果我使用node.run_list.recipe_names它返回我

cookbook3::recipe1 
cookbook4::default 

node.run_list._to_s返回

"role[role1], 
role[role2], 
recipe[cookbook3::recipe1], 
recipe[cookbook4::default]. 

角色不擴大。 如何創建一個只有食譜的變量纔會被收斂?

"recipe[cookbook1:recipe2], 
recipe[cookbook2:recipe1], 
recipe[cookbook3::recipe1], 
recipe[cookbook4::default]" 

回答

0

你需要的是node['recipes']。但請記住,這不是一個完美的列表,任何通過include_recipe運行的任何內容僅在包含發生後顯示。

+0

謝謝@coderanger,但是這會損失收斂的順序。有沒有辦法保存它? – sidxz

+0

它不應該,這是基於運行列表擴展以及通過'include_recipe'添加的任何內容。 – coderanger

+0

我的壞,它是爲了,但我不想包括食譜。只是在運行列表中定義的配方列表。我期待訪問在lib/chef/client.rb(Chef :: Client#expanded_run_list)或類似的東西上定義的變量expanded_run_list。 – sidxz