【问题标题】:Chef Apache2 recipe failing during server build在服务器构建期间 Chef Apache2 配方失败
【发布时间】:2015-01-23 15:27:01
【问题描述】:

我一直在重建我们的 Chef 主服务器以在 T2 实例中运行,这意味着将其移至 VPC。旧主运行的是 11.10.4,而我一直在修补的新主运行的是 11.16.4。我已经接近让它在 VPC 中构建一个合适的服务器,但它在设置 Apache 时挂了。

ohai[reload_users] action reload[2014-11-25T08:13:58-06:00] 错误:运行插件时遇到错误:#<:exceptions::attributenotfound>

特别是它似乎不喜欢配方中的这段代码

if node[:etc][:passwd][:apache] == nil
    ohai "reload_users" do
        plugin "passwd"
        action :reload
    end
end

我环顾四周,发现this article on ohai

在 Ohai 6 passwd 插件(名为 passwd.rb)中设置了 'current_user' 属性并且为了使用它 数据需要知道这一事实。
require_plugin("passwd")

在 Ohai 7 中,用户交互现在基于属性名称。仅指定您要为其收集数据的属性的名称。 Ohai 7 找出需要哪些插件,然后收集数据。

在 Ohai 7 中,无需了解底层细节即可找出 current_user
取决于“当前用户”

看起来很接近...但是如果我将 plugin "passwd" 替换为 depends 'currentuser' 它也会失败。

认为我正在使用 Ohai 7(gem list 显示 ohai (7.4.0))。我不是红宝石人,所以那里有点模糊。这段代码到底应该做什么?这是从旧的 Opscode 食谱自定义添加到 repo 中的。我们的食谱主要是由不再为我们公司工作并且也不知道答案的其他人编写的。如果我将其注释掉,它就可以正常工作并安装 Apache,但如果我在不理解的情况下删除一些代码,那就太失职了。

【问题讨论】:

  • 请注意,您链接到的博文存在严重的格式问题。请注意,某些单词(尤其是在代码中)开始以斜体字居中输入。那里缺少一个下划线,实际上博客软件似乎将其解释为斜体文本的开头,类似于在 StackOverflow 上的处理方式。

标签: ruby apache chef-infra chef-recipe ohai-gem


【解决方案1】:

使用 OHAI 7,您不需要(也不能)根据提供特定功能的文件名重新加载插件。相反,您可以根据要重新加载的特定属性重新加载它。

因此,虽然node['etc']['passwd'] 中的属性仍然由名为passwd.rb 的插件提供,但您不能以这种方式重新加载它。相反,您想重新加载node['etc'] 中的数据,而不管它是从哪个文件填充的。

您可以在配方中使用此代码重新加载密码数据:

ohai "reload_users" do
  plugin "etc"
  action :reload
end

这摘自https://docs.getchef.com/ohai.html#id3 的文档。

【讨论】:

    猜你喜欢
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 1970-01-01
    • 2010-09-05
    • 1970-01-01
    相关资源
    最近更新 更多