Ruby 将节点属性传递到应用程序

Ruby 将节点属性传递到应用程序,ruby,chef-infra,chef-recipe,Ruby,Chef Infra,Chef Recipe,是否有任何方法可以将属性传递到烹饪书的chef apply运行中 我食谱的第一行是: if node[:my_attr][:enabled] 这导致: NoMethodError: undefined method '[]' for nil:NilClass 当我跑的时候 chef-apply recipes/default.rb 将适当的属性添加到attributes/default.rb中并不能解决此问题,添加节点[:my_attr]={}的初始化也不能解决此问题 如何将节点属性传递到

是否有任何方法可以将属性传递到烹饪书的chef apply运行中

我食谱的第一行是:

if node[:my_attr][:enabled]
这导致:

NoMethodError: undefined method '[]' for nil:NilClass
当我跑的时候

chef-apply recipes/default.rb
将适当的属性添加到attributes/default.rb中并不能解决此问题,添加节点[:my_attr]={}的初始化也不能解决此问题


如何将节点属性传递到chef apply运行中?

在attributes/default.rb中 申报

然后你就可以在你的食谱中找到它们

您还可以使用chef-client-j选项将属性的值传递给属性。

p正确。chef apply很像一个shell脚本解释器。你甚至可以散列你的文件

#!/usr/bin/env chef-apply

# define attributes here

# create chef resources and other valid chef/ruby code

我已经在我的attributes/default.rb中定义了-j选项。适用于chef apply吗?-j选项不能用于chef apply,这是我的错误。你面临的问题是什么?您的属性没有反映在菜谱中?在运行chef apply时,my attributes/default.rb中定义的属性都没有传播到我的食谱中。在菜谱顶部手动定义它们确实有效,但如果可能的话,我希望避免这样做,以便菜谱可以通过chef apply和regular chef运行。这些答案对您有用吗?请不要忘记将答案标记为正确
#!/usr/bin/env chef-apply

# define attributes here

# create chef resources and other valid chef/ruby code