2014-02-11 2 views
3

주방장 10 용 LWRP를 쓰고 있습니다. 그리고 그 자원이 다른 조리법에서 실행될 때 무엇인가가 변경되면 "updated_by_last_action"으로 표시해야합니다. 그러나 아무것도 변화하지 않았다면. updated_by_last_action은 false 여야합니다.요리사 요리 책 lwrp, 가장 쉬운 방법 new_resource.updated_by_last_action (true)

예를 들어 요리사 문서 http://docs.opscode.com/lwrp_custom_provider.html#updated-by-last-action이 있습니다. 이 예제는 리소스 템플릿이 변경된 경우 테스트 할 변수 안에 래핑 된 다음 updated_by_last_action 상태를 설정합니다. 그래서 내 코드는 다음과

f = file new_resource.filename do 
xxx 
end 
new_resource.updated_by_last_action(f.updated_by_last_action?) 

t = template new_resource.templatename do 
xxx 
end 
new_resource.updated_by_last_action(t.updated_by_last_action?) 

m mount new_resource.mountpoint do 
xxx 
end 
new_resource.updated_by_last_action(m.updated_by_last_action?) 

처럼 보일 것이다 그러나 공급자가 커짐에 등 템플릿, 파일, 디렉토리, 마운트, 같은 자원을 많이 사용하는 경우 .. 는 모든 자원과 같은 변수를 내부에 랩해야 하는가 예를 들어 리소스가 업데이트되었는지 알아 내면이 공급자가 업데이트 된 상태를 더 보내야합니다.

new_resource.updated_by_last_action(true)을 실행하는 더 간단하고 깨끗한 방법이 있다면 변수 안에 모든 리소스를 래핑하는 것이 궁금합니다. 왜냐하면 내가 new_resource.updated_by_last_action(true)action 안에 넣고 end 앞에 놓는다면, LWRP는 매 요리사가 업데이트하는 것으로 표시되기 때문에 최적이 아닙니다.

답변

5

LWRP 상단에 use_inline_resources을 추가하면 updated_by_last_action을 인라인 리소스에 위임 할 수 있습니다.

+0

저는 현재 주방장 10 명을 사용하고 있습니다. 그리고 chef 10에서는 use_inline_resources가 지원되지 않습니다. – Raboo

+0

질문을 업데이트하도록 지정하십시오. 기존 패턴 이외에 할 수있는 것은 없습니다. – sethvargo