我正在制作一个厨师食谱,在我的流浪盒上设置一个带有nginx postgresql和独角兽的香草ubuntu 12.04.2,但是我遇到了nginx的麻烦,有一个例外
undefined method `[]' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
安装它时,似乎与ohai配置有关.
我发布了我在这里的所有内容:
https://github.com/DonGiulio/mychef
Run Code Online (Sandbox Code Playgroud)
这是chef-solo的输出:
Starting Chef Client, version 11.4.0
Compiling Cookbooks...
================================================================================
Recipe Compile Error in /var/chef/cookbooks/nginx/recipes/source.rb
================================================================================
NoMethodError
-------------
undefined method `[]' for nil:NilClass
Cookbook Trace:
---------------
/var/chef/cookbooks/nginx/recipes/ohai_plugin.rb:27:in `from_file'
/var/chef/cookbooks/nginx/recipes/source.rb:42:in `from_file'
Relevant File Content:
----------------------
/var/chef/cookbooks/nginx/recipes/ohai_plugin.rb:
20: #
21:
22: ohai 'reload_nginx' do
23: plugin 'nginx'
24: action :nothing
25: end
26:
27>> template "#{node['ohai']['plugin_path']}/nginx.rb" do
28: source 'plugins/nginx.rb.erb'
29: owner 'root'
30: group 'root'
31: mode '0755'
32: notifies :reload, …Run Code Online (Sandbox Code Playgroud) 在OpsCode Wiki中有以下文档:
require 'ohai'
# ...
# Profit! ;-)
Run Code Online (Sandbox Code Playgroud)
如何打印'ohai'命令提供但使用IRB的JSON数据?我试着在application.rb中看到代码,但是我得到了空数据.
require 'ohai/application'
ohai = Ohai::System.new
ohai.json_pretty_print
=> "{\n\n}"
Run Code Online (Sandbox Code Playgroud)
我并不想内厨师(或做SHEF),我只是想用ohai宝石本身,在我自己的应用程序.
我一直在重建我们的Chef主服务器以在T2实例中运行,这意味着将其移至VPC。旧的主机正在运行11.10.4,而我一直在修改的新主机正在运行11.16.4。我已经接近让它在VPC内构建适当的服务器,但是它挂了设置Apache的电话。
ohai [reload_users]操作重新加载[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
Run Code Online (Sandbox Code Playgroud)
在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食谱的仓库中的。我们的食谱主要由不再为我们公司工作并且也不知道答案的其他人撰写。如果我将其注释掉,它可以很好地工作并安装Apache,但是如果不理解它就删除一些代码,我将不予理miss。