Chef中有data_bag_item的条件属性?

时间:2015-04-28 02:22:35

标签: ruby chef

我需要将默认属性(从cookbook依赖项)设置为我在数据库中包含的值。我希望将属性设置为data_bag_item的值,如果不存在则设置为nil。在attribute.rb

if defined?(data_bag_item('databag', 'item'))
    default["something"]["item"] = data_bag_item('databag', 'item')
else
    default["something"]["item"] = nil
end

稍后在我自己的食谱中,我正在检查变量是否设置为nil但是它似乎失败了,因为这是一个错误(就像没有执行条件因此没有创建default["something"]["item"]) :No resource, method, or local variable named 'default' for 'Chef::Recipe "something"'

我在这里做错了什么?

EDIT 我正在学习厨师,就像我在这里学习Ruby一样。在条件限制的情况下,我完全可以错误地使用定义。我对这里的每一个评论家都开放! )

1 个答案:

答案 0 :(得分:1)

我不确定您的食谱的完整背景,但看起来您应该更改default的{​​{1}}。为什么? node用于设置可以更改为部署的每个节点的值,但是当您运行脚本时,可以使用default获取值。因此,只需更改node default["something"]["item"],然后检查变量。