2014-11-24 3 views
0

요리사 템플릿 사용에 대한 질문이 있습니다.조리법에 따라 내용으로 추가되는 요리사 템플릿 파일에 대한 질문

어떤 레서피가 사용되고 있는지에 따라 템플릿을 업데이트 할 수 있습니까? 예를 들어 수집 된 기본 레시피와 호출 된 rabbitmq가 있습니다. rabbitmq 부분은 여전히 ​​기본/기본 래서 피의 일부를 사용할 것이며, rabbitmq 비트가 호출되면 (IE collectd :: rabbitmq) 템플릿에 데이터를 추가하기를 원합니다.

사용법에 따라 기본 템플릿을 사용자 정의 할 수 있습니까?

건배!

답변

0

그래, 그냥 템플릿 속성을 사용하십시오. 이런 식으로 뭔가 :

template 'my template' do 
    source 'some_teplate.erb' 
    attributes :rabbit_stuff => true, 
      :other_thing => 'somevalue' 
end 

그리고 템플릿

.... 
<% if @rabbit_stuff -%> 
    rabbit things in here 
<% end -%> 
Common stuff 
.... 

그리고 그냥 플래그 일 필요는 없습니다. 당신은 많은 속성을 가질 수 있으며 어떤 속성이 정의되어 있는지를 기반으로 이와 같은 작업을 수행 할 수 있습니다.

<%= @some_attribute %> <% if @some_attribute %> 
+0

안녕하세요, 소리가 잘 들었지만 시도해 보았지만 recipe collectd :: rabbitmq를 실행 중입니다. 특정 레시피를 호출하는 것을 기반으로 실제로 수행 할 수 있습니까? – wingZero

+0

아니요. 직접적으로 아닙니다. 한 속성에서 특정 속성을 전달해야하지만 다른 속성에서는 속성을 전달할 필요가 없습니다. 그런 다음 템플리트 내부에서 해당 속성을 찾고 속성이있는 경우 템플리트의 해당 부분 만 처리합니다. –

0

하나의 템플릿 리소스가있는 경우 많은 요리 책에서 속성을 수집 할 수 있습니다. collectd/attributes/default.rb를 사용하여 기본 [ 'rabbitmq'] [ 'whatever']에 속성을 설정할 수 있으며, 그러면 rabbitmq 요리 책에 의해 템플릿으로 렌더링됩니다. collectd 요리 책이 노드의 실행 목록에 없으면 요리 책은 노드와 동기화되지 않으며 속성 파일은 평가되지 않습니다.

수집 된 요리법이 노드에 나타나면 속성 디렉토리의 모든 파일이 평가된다는 점에 유의하십시오. 이렇게하면 요리 책을 구조화하여 다른 역할이 다른 요리 책을 갖도록해야합니다. collectd_ rabbitmq 요리법 대신 collectd_rabbitmq 요리 책이 필요하다는 것을 의미 할 수 있습니다.

다른 요리 책의 다른 정보를 하나의 템플릿 리소스에 주입하는 방법에있어 나의 첫 번째 선택이 될 것입니다.