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


13

我能够按照记录的那样在角色文件中设置属性,但是我无法访问我正在使用的食谱已经设置的属性。

例如在/roles/appserver.rb中:

name "appserver"

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

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

我得到的是一个异常,指出厨师无法找到“节点”方法/变量。

谢谢

Answers:


12

你不能。使用小刀将角色上载到服务器时,角色Ruby DSL从Ruby转换为JSON。该节点对象不可用,因为在Chef运行的上下文中未对其进行处理。

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

"#{node[:tomcat][:java_options]}#{node[:tomcat][:log_dir]}"

0

您实际上可以require_relative 'base_role_file'在角色内部使用,并且此必需文件可能会设置一些全局变量供您使用。蛮黑的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.