在厨师中,如何访问角色文件中的属性?

Oph*_*itz 13 chef

我可以按照文档中的说明在角色文件中设置属性,但我无法访问我正在使用的说明书已经设置的属性。

例如在 /roles/appserver.rb 中:

name "appserver"

run_list(%w{
  recipe[tomcat::default]
})

default_attributes(
  :tomcat => {
    :java_options => "-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=" + node[:tomcat][:log_dir]
  }
)
Run Code Online (Sandbox Code Playgroud)

我得到的是一个异常,说明厨师找不到“节点”方法/变量。

谢谢

jti*_*man 12

你不能。当你用knife上传角色到服务器时,角色Ruby DSL从Ruby转换成JSON。节点对象不可用,因为它不在 Chef 运行的上下文中处理。

如果要组合节点属性,则应在配方中执行此操作,例如:

"#{node[:tomcat][:java_options]}#{node[:tomcat][:log_dir]}"
Run Code Online (Sandbox Code Playgroud)