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

我可以按照logging的方式在angular色文件中设置属性,但是我无法访问我正在使用的食谱已经设置的属性。

例如在/roles/appserver.rb中:

name "appserver" run_list(%w{ recipe[tomcat::default] }) default_attributes( :tomcat => { :java_options => "-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=" + node[:tomcat][:log_dir] } ) 

我得到的是一个例外,说明厨师找不到'节点'方法/variables。

谢谢

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

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

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

你可以在angular色里面使用require_relative 'base_role_file' ,这个需要的文件可能会设置一些全局variables供你使用。 漂亮哈克。