我一直在重建我们的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,但我会疏忽只是删除一些代码而不理解它。
答案 0 :(得分:5)
使用OHAI 7,您不需要(也不能)根据提供特定功能的文件名重新加载插件。而是根据要重新加载的特定属性重新加载它。
虽然node['etc']['passwd']
中的属性仍然由名为passwd.rb
的插件提供,但您无法以这种方式重新加载。相反,您希望在node['etc']
中重新加载数据,无论它在哪个文件中被填充。
因此,您可以在配方中使用此代码重新加载密码数据:
ohai "reload_users" do
plugin "etc"
action :reload
end