2013-07-05 58 views
4

我有一個與廚師合作的舊項目(https://github.com/noha/virtual-gemstone)。它使用廚師和流浪漢一起實現其目標。這個項目在過去的幾個月裏已經過時了,現在我想重新激活它。 但我沒有太多的運氣與主廚11一起運行。無論我嘗試什麼,屬性/ default.rb中的值都不存在。在寶石/屬性/ default.rb文件我有廚師不讀取屬性和定義

default[:gemstone][:base_url] = "http://glass-downloads.gemstone.com/gss24" 
default[:gemstone][:version] = "GemStone64Bit2.4.4.1-x86_64.Linux" 
default[:gemstone][:dir] =  "/opt/gemstone" 
default[:gemstone][:log_dir] = "/opt/gemstone/log" 
default[:gemstone][:lock_dir] = "/opt/gemstone/locks" 
default[:gemstone][:user] =  "gemstone" 
default[:gemstone][:no_gems] = 3 
default[:gemstone][:low_port] = 7000 
default[:gemstone][:cache_path] = Chef::Config[:file_cache_path] 

,並在寶石/食譜/ base.rb我

... 
tmp = node[:gemstone][:cache_path] 
base_url = "#{node[:gemstone][:base_url]}" 
file = "#{node[:gemstone][:version]}.zip" 
dir = "#{node[:gemstone][:dir]}/#{node[:gemstone][:version]}" 
... 

但值始終是未定義/空。我甚至嘗試在屬性文件中設置node.default,並在訪問配方中的值時嘗試。

爲了測試它,我已將所有配方.rb文件複製到一個default.rb文件中,並添加了屬性文件中的內容。這有效,但它沒有抱怨我在gemstone/definitions/monit.rb中定義的缺少函數monit_gem。

整個項目在幾個月前就開始工作了。所以我認爲我目前對廚師11的設置存在根本性錯誤。但是爲了正常工作,我找不到需要調整的部分。

什麼可能是由大廚不讀取屬性和定義文件的原因?

回答

14

我從opscode列表中獲得了幫助。如果在配方中使用include_recipe,則必須在包含配方的metadata.rb中放置依賴語句。否則,屬性,定義等不會被讀取,因此在配方內不可用。

+0

有時使用'include_attribute'確保屬性文件按正確的順序加載很重要。 (標記你的答案也是答案。) –

+0

這個答案解決了我的問題 - 我的食譜的屬性沒有被加載。我爲metadata.rb添加了一個「depends」語句,包括破壞的配方,現在一切正常。 – spiffytech