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]
  }
)

내가 얻는 것은 요리사가 '노드'방법 / 변수를 찾을 수 없다는 예외입니다.

감사

답변:


12

당신은 할 수 없습니다. 칼로 서버에 역할을 업로드하면 Ruby DSL 역할 이 Ruby에서 JSON으로 변환됩니다. Chef 실행 컨텍스트에서 처리되지 않으므로 노드 오브젝트를 사용할 수 없습니다.

대신 노드 속성을 결합하려면 다음과 같이 레시피에서 수행해야합니다.

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

0

실제로 require_relative 'base_role_file'역할 내에서 사용할 수 있으며이 필수 파일은 사용할 전역 변수를 설정할 수 있습니다. 꽤 해키.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.