2016-10-31 3 views
0

for 루프에서 remote_file을 사용하여 배포 파일 (노드 속성에 지정)을 사용하고 있습니다. 나는 주어진 체크섬 (sha256sum)이 이미 존재하는 파일이 같은지 여부를 확인한다; 그렇지 않다면 나는 그들을 업데이트한다. 같은 경우 단순히 건너 뜁니다.remote_file을 사용할 때 파일 업데이트를 감지하는 방법

배포 디렉토리에서 변경된 파일의 경우 앱 서버를 다시 시작하기 위해 파일이 업데이트되었는지 여부를 레시피에서 알아야합니다.

사용할 수있는 기본 특성 (모든 파일 업데이트가 건너 뛰었 음을 알려주는)이 있습니까? 또는이를 수행하는 데 가장 좋은 방법은 무엇입니까?

감사합니다,이 경우에 도움이 요리사 notifications의 개념이있다

node['app']['deployments'].each do |file, value| 
    remote_file "/apps/deployments/#{value['file-name']}" do 
     source "file:///tmp/deployments/#{value['file-name']}" 
     checksum value['check-sum'] 
    end 
end 

답변

2

:

node['app']['deployments'].each do |file, value| 
    remote_file "/apps/deployments/#{value['file-name']}" do 
     source "file:///tmp/deployments/#{value['file-name']}" 
     checksum value['check-sum'] 
     notifies :restart, 'service[appserver]' 
    end 
end 

service "appserver" 

만큼 당신이 notifies:immediately 매개 변수를 제공하지 않는 한 , 요리사 - 클라이언트는 요리사가 끝날 때 번까지 모든 알림을 대기열에 넣고 실행합니다 (서비스 다시 시작).

+0

감사합니다. 그러나 파일이 업데이트되었는지 여부를 알고 파일 중 하나가 업데이트 된 경우에만 다시 시작해야합니다. – hamdani

+0

요리사가 자동으로 수행합니다. 업데이트 된 파일이 없으면 결코'service' 리소스에 알리지 않습니다. 모든 파일이 업데이트되면 여러 번 알림을 표시하지만 마지막에 한 번만 다시 시작됩니다. – StephenKing

+0

다른 말로하면 : 알림은 자원이 업데이트 된 경우에만 트리거됩니다 (귀하의 경우 : 파일이 변경됨). – StephenKing

관련 문제