将节点属性传递给chef-apply

时间:2013-08-26 08:22:13

标签: ruby chef chef-recipe

有没有办法将属性传递到cookbook的chef-apply运行中?

我食谱的第一行是:

if node[:my_attr][:enabled]

导致:

NoMethodError: undefined method '[]' for nil:NilClass

当我跑

chef-apply recipes/default.rb

attributes/default.rb中添加适当的属性不能解决此问题,也不会为node[:my_attr] = {}添加初始化。

如何将节点属性传递给chef-apply运行?

2 个答案:

答案 0 :(得分:0)

在attributes / default.rb中 声明

default['my_attr']['enabled']= "value"

然后你就可以在食谱中访问它们了

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

答案 1 :(得分:0)

亚伯拉罕P说得对。 chef-apply很像shell脚本解释器。你甚至可以哈希抨击你的文件。

#!/usr/bin/env chef-apply

# define attributes here

# create chef resources and other valid chef/ruby code