2016-09-11 14 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

関連する問題