2016-09-11 5 views
0

노드를 마지막으로 체크인 한 시간을 얻기 위해 나이프를 사용할 수 있지만 레시피 내부에서 어떻게이 정보를 얻을 수 있습니까?레시피에서 마지막으로 노드를 체크인하십시오

칼 명령을 실행하여 요리법에서 칼을 실행할 수 있지만 더 우아한 해결책이 있는지 궁금해합니다. 이것은 레시피 내부에 노출 된 노드 객체에 저장된 속성입니까?

ohai_time 속성을 사용하여 많은 사람들이 온라인 상태를 볼 수 있지만, 마지막으로 chef-client가 마지막으로 성공한 체크 인을 마지막으로 기록한 것처럼 보입니다. chef-client가 30 분마다 로컬에서 실행됩니다. chef-client가 실행되는 경우에도 ohai_time이 업데이트되지만 성공적인 체크인을 수행하기 위해 서버에 접속할 수 없습니까? 그렇다면 그것을 사용하는 것이 이치에 맞지 않습니다.

답변

1

이렇게하는 것이 최선의 방법은 아닙니다. 노드가 체크인하지 않은 경우 nil을 반환합니다

res = search(:nodes, "name:#{node.name}", filter_keys: {ohai_time: %w{ohai_time}}).find {|n| n.name == node.name } 
last_ohai_time = res && res['ohai_time'] 

, 당신은 당신의 코드에 따라 다른 값을 사용할 수 있습니다 다음 해키 -하지만-작동 방식은 다음과 같이 될 것이다.

+0

많은 사람들이 ohai_time을 사용하는 것을 보았습니다.하지만 마지막으로 주방장 클라이언트가 실행되거나 마지막으로 성공적으로 체크인 한 것입니까? – red888

+1

실행이 시작되는 시점이지만, 수렴이 성공하면 노드는 서버에 다시 데이터를 저장하기 때문에 효과적으로 동일한 것을 의미합니다. – coderanger

+0

쿨! 따라서 노드 오브젝트는 실패한 실행을 위해 서버 또는 클라이언트에서 보존되지 않습니다. – red888