chef属性值未在另一个属性中解析

时间:2015-09-21 05:03:32

标签: ruby attributes chef

我将default.rb中的属性设置为

default[:my_app] = {
  :vol => "data02",
  :commitlog => "/foo/bar/node[:vol]/commitlog",
}

但是:vol值没有在commitlog属性中被解析,而且我得到了以下错误。

mError executing action `create` on resource 'directory[/foo/bar/node[:vol]/comitlog]'[0m

2 个答案:

答案 0 :(得分:2)

您错过了字符串插值语法,例如y = "The value of X is #{X}."你可能想要:

default[:my_app] = {
  :vol => "data02",
  :commitlog => "/foo/bar/#{node[:vol]}/commitlog",
}

另外,请注意,如果您创建一个属性取决于另一个属性的值,则可以稍后覆盖node[:my_app][:vol]并期望node[:my_app][:commitlog]的值随之更改,但可能不会。在您的覆盖影响第一个属性之前,可能会一起解析属性。

答案 1 :(得分:0)

即使在我使用插值语法之后,当我在配方中使用节点[:my_app] [:commitlog]时,它显示/ foo / bar // commitlog