2014-02-24 6 views
0

저는 요리사를 초보자로 삼아 요리법을 통해 배포 할 때마다 클라우드 노드에서 재 작업자를 다시 시작하고 싶습니다. resque가 작업자를 시작하기 위해 제공하는 레이크 작업이 있습니다. 작업을 중지하려면 greake resque 프로세스를 수동으로 종료하십시오.요리사의 요리 책을 통해 레크 작업자를 시작하는 방법은 무엇입니까?

요리사에서 레이크 작업을 수행하는 방법에 대한 좋은 예제를 찾을 수 없었습니다 services. 누군가 내가 의도 한대로 샘플 서비스를 도와 줄 수 있습니까?

답변

1

는 근로자 (필요에 적응)를 다시 시작하는 데 사용됩니다 action :nothing와 함께 execute 리소스를 만듭니다

execute "restart_resque_workers" do 
    command "pkill resque && QUEUE='*' bundle exec rake environment resque:work >>/log/resque.log 2>&1 &" 
    cwd "/path/to/app" 
    action :nothing 
end 

다음, 배포 리소스에 추가 :

application "app" do 
    ... 
    notifies :run, "execute[restart_resque_workers]" 
end 

를 이상적으로, stop, startrestart 메커니즘은 적절한 서비스에 의해 처리되지만 어떤 경우 든 전체 패턴은 동일합니다.

application 리소스가 수정 된 경우에만 notifies 속성이 시작됩니다 (일반적으로 이는 새 배포를 의미 함).

알림에 대한 추가 정보 in the Chef docs.


가난한 사람의 서비스는 다음과 같이 갈 수 :

service 'resque_workers' do 
    start = "QUEUE='*' bundle exec rake environment resque:work >>/log/resque.log 2>&1" 
    stop = "pkill resque" 
    start_command start 
    stop_command stop 
    restart_command "#{stop}; #{start}" 
    supports [ :start, :stop, :restart ] 
end 

그런 다음 application 자원에 notifies :restart, "service[resque_workers]"를 사용합니다.

+0

서비스를 작성해 주셔서 감사합니다. :) –

+0

NP! 나는 나의 요리 책 중 하나에 대해 비슷한 것을 한 것 뿐이므로 여기에 그것을 넣는다. :)이 서비스는'service rescue_workers start/stop'를 사용하여 OS에서 관리 할 수있는 실제 서비스가 아닙니다. 어떤 이유로 든 상자 자체에서 관리해야하는 경우에도 명령을 직접 실행해야합니다. – cassianoleal