【问题标题】:Chef does not read attributes and definitionsChef 不读取属性和定义
【发布时间】:2013-07-06 17:44:10
【问题描述】:

我有一个与厨师 (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 的设置存在根本性错误。但我找不到需要为此进行调整才能正常工作的太多内容。

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

【问题讨论】:

    标签: attributes chef-infra vagrant


    【解决方案1】:

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

    【讨论】:

    • 此外,有时使用include_attribute 确保属性文件以正确的顺序加载也很重要。 (也将您的回复标记为答案。)
    • 这个答案解决了我的问题——我的食谱的属性没有被加载。我在 metadata.rb 中添加了一条“depends”语句,用于包含损坏的配方,现在一切正常。
    猜你喜欢
    • 2022-11-11
    • 2019-06-07
    • 1970-01-01
    • 2021-12-20
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 2020-11-02
    相关资源
    最近更新 更多