2014-01-27 1 views
3

저는 신입생 Chef입니다. sendmail을 설치하는 요리법이 있는데 그것은 제 구성입니다. 나는 모든 실행에서 Chef가 서비스를 다시 시작한다는 것을 알아 챘습니다. 그 이유는 세션 다시 시작을 호출하는 execute을 실행하기 때문입니다.요리사가 블록을 실행합니다

그것은 다음과 같습니다

execute "hashAccess" do 
    command "makemap hash /etc/mail/access < /etc/mail/access" 
    notifies :restart, "service[sendmail]" 
end 

내가 access 파일을 업데이트 한 경우에만이를 호출해야합니다. 파일이 업데이트 될 때

template "/etc/mail/access" do 
    source "access.erb" 
    mode "0644" 
    notifies :run, "execute[hashAccess]" 
end 

execute는 두 번 호출됩니다. 자원 모두 동일한 제조법에 내가 definehashAccess하려고 할 때 나는

ERROR: Cannot find a resource for define on amazon version 2013.09 

가 어떻게 호출 된 경우에만 실행하는 데 자원을 실행해야합니까 오류를 얻을?

답변

6

action :nothing을 실행 리소스에 추가해야합니다.

execute "hashAccess" do 
    command "makemap hash /etc/mail/access < /etc/mail/access" 
    action :nothing 
    notifies :restart, "service[sendmail]" 
end 

이렇게하면 다른 리소스가 알림을 표시하지 않는 한 실행되지 않습니다.

+0

고맙습니다! 나는 그것이 간단 할 것임을 압니다 ... :) –

+1

thanks @Draco Ater – Robert