2016-07-20 37 views
0

我已经创建了我的食谱中的红宝石块如下:node.run_state给错误:未定义的方法`[]”的零:NilClass

ruby_block 'load_databag_secret' do 
    block do 
    value = data_bag_item("tokens", "masterkey", IO.read("/etc/chef/encrypted_data_bag_secret")) 
    node.run_state['docker']['password'] = value['key'] 
    end 
end 

现在,我试图用node.run_state['docker']['password']如下:

token2_hash = lambda { token1_hash.deep_merge({ "value" => node.run_state['docker']['password'] }) } 

不过,我提示以下错误:

ERROR: undefined method `[]' for nil:NilClass 

请建议使用正确的方法

回答

-1

运行状态不像自动生成未定义级别的节点属性。更重要的是,它是一种先进的内部功能,如果没有厨师和背景的更多知识,您可能不应该使用它。

我以前对你说过,我会再说一遍:停止在StackOverflow上询问这些一次性问题。你显然正在努力完成某些具体的事情,这些事情可以追溯到你问过的十多个问题。这不是一个好的地方,请问IRC,Slack或Discourse,答案者可以有统一的背景和对实际目标的更好理解。

+0

我明白你的观点。但所有这些网站在我的公司笔记本电脑上都被封锁:( – meallhour

+0

这很严厉,我通常在这些情况下的建议是向你的老板说明,而限制访问Chef志愿者支持的上级意味着他们需要去购买商业广告支持合同,如果他们不这样做,他们需要让我们的志愿者支持团队以最有效的方式实现胜利,因为我们没有足够的资源来抵消他们的IT政策。 – coderanger

相关问题