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] } )
我得到的是一個異常,說明廚師找不到“節點”方法/變數。
謝謝
你不能。當您使用刀將角色上傳到伺服器時,角色Ruby DSL會從 Ruby 轉換為 JSON。節點對像不可用,因為它不在 Chef 執行的上下文中處理。
相反,如果要組合節點屬性,則應在配方中執行此操作,例如:
"#{node[:tomcat][:java_options]}#{node[:tomcat][:log_dir]}"
您實際上可以
require_relative 'base_role_file'
在角色內部使用,並且此必需文件可能會設置一些全域變數供您使用。相當hacky。