在服务器构建期间,厨师Apache2配方失败

时间:2014-11-25 14:55:47

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

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

  

ohai [reload_users] action reload [2014-11-25T08:13:58-06:00]错误:运行插件时遇到错误:#< Ohai :: Exceptions :: AttributeNotFound:没有这样的属性:'passwd'

具体来说,它似乎不喜欢配方中的这段代码

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
的基本细节   取决于'currentuser'

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

认为我正在使用Ohai 7(gem list显示ohai (7.4.0))。我不是一个红宝石家伙所以它有点模糊。这段代码到底应该做什么?这是自定义添加到旧Opscode cookbook的repo。我们的食谱主要是由不再为我们公司工作的其他人写的,也不知道答案。如果我发表评论它可以正常工作并安装Apache,但我会疏忽只是删除一些代码而不理解它。

1 个答案:

答案 0 :(得分:5)

使用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的文档。