4

我有一个与厨师(https://github.com/noha/virtual-gemstone)建立的旧项目。它使用 chef 和 vagrant 来实现它的目标。在过去的几个月里,这个项目已经过时了,现在我想重新激活它。但是我在使用 chef 11 运行它时运气不佳。无论我尝试什么,attributes/default.rb 中的值都不存在。在 gemstone/attributes/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]

在 gemstone/recipes/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 的缺少函数。

整个项目在几个月前就开始工作了。因此,我认为我目前对 Chef 11 的设置存在根本性错误。但我找不到需要为此进行调整才能正常工作的太多内容。

厨师不读取属性和定义文件的原因可能是什么?

4

1 回答 1

14

我得到了操作码列表的帮助。如果在配方中使用了 include_recipe,则必须在 metadata.rb 中为包含的配方放置一个依赖语句。否则属性、定义等不会被读取,因此在配方中不可用。

于 2013-07-06T09:44:10.560 回答