2012-05-26 4 views
1

나는 두 가지를 달성하고 싶다 바로 사용할 수있는 기능을 제공하고 루비가 허용하는 것만으로도 문법과 같은 의사 코드를 이해할 수 있지만 실행하지 않기 때문에 실제 도움을 줄 수있는 조언이나 조언이 필요합니다. 계속하기 전에 어떤 특정 상태를 확인하고자하는 경우요리사와 함께 ruby에서 elasticsearch 상태 검사를 코딩하는 방법? 어떤 요리사 사이에 이제 <p></p>를 진행하기 전에 1) elasticsearch가 실행되고 있지 않은 경우 (모든 무의미 PID 파일을 청소) 한 다음 시작하고 2) ES가 시작되었는지 확인하십시오

bash "wait for it to start up" do 
    user "root" 
    only_if { # pretty sure this syntax is all incorrect, any ideas to make it happen? 
     (sudo service elasticsearch status).match(/^elasticsearch running with PID/) 
    } 
    retries 20 
    retry_delay 5 
    code <<-EOS 
     echo "I can now go on with my life..." 
    EOS 
end 
+1

주방장이 서비스 감독에 적합한 도구라고 생각하지 않습니다. runit, daemontools, bluepill, monit 또는 upstart 대신이 작업을 위해 특별히 만든 도구 중 하나를 사용하십시오. –

+0

좋은 포인트! 그리고 저는 서비스 감독을 위해 이것을하지 않습니다 ... 저는 요리사를 통해 인스턴스를 프로비저닝하는 중이며 run_list에 여러 가지 요리법이 있습니다. ES 이후에 나오는 요리법에는 개념이 없으므로이 검사가 필요합니다. 레시피 런 사이의 지연. Monit은 실제로 실행되는 몇 가지 조리법 중 하나이므로, 나는 루비의 요리사를 통해이 검사를해야합니다. – pulkitsinghal

답변

0

하는이 삽입 : (2)에 대한

bash "start it up" do 
    user "root" 
    only_if { # pretty sure this syntax is all incorrect, any ideas to make it happen? 
     (sudo service elasticsearch status).match(/^elasticsearch not running/) 
    } 
    code <<-EOS 
     sudo rm -rf /usr/local/var/run/elasticsearch/*.pid 
     sudo service elasticsearch restart 
    EOS 
end 

의사 코드 : (1)의 경우

의사 코드

service "elasticsearch" do 
    action [ :enable, :start ] 
    status_command "/usr/sbin/service elasticsearch status | grep 'running with PID'" 
end 

그것은 초기화 스크립트의의 일이다 : 조리법 (이 시험 예 및되지 않습니다) 0 명령을 사용하여 서비스가 실제로 시작될 때까지 기다립니다.

요리사 문서는 말한다 :

서비스 리소스가 많이 발행 명령을 통해 조리법 완벽하게 제어 할 수 있습니다 직접 속성 START_COMMAND를 노출하기 때문에 서비스를 제어하기 위해 실행 리소스를 사용할 이유가 없습니다 보다 직접적이고 직접적인 방법.