上次在配方中检入节点

时间:2016-09-11 00:04:37

标签: chef chef-recipe knife cookbook

我知道我可以使用刀来获取最后一次检查节点但是如何在配方中获取此信息?

我可以运行一个shell命令在一个食谱中运行刀,但只是想知道是否有一个更优雅的解决方案。这是一个存储在配方内公开的节点对象中的属性吗?

我看到很多人在线使用ohai_time属性,但看起来只是记录上次Chef-client运行不是最后一次成功签入。 chef-client每30分钟在本地运行一次,如果厨师 - 客户端运行,ohai_time仍会更新,但是它无法联系服务器进行成功检查?如果是这样,那么使用它是没有意义的。

1 个答案:

答案 0 :(得分:1)

没有超级好的方法可以做到这一点。 hacky-but-works的方式是这样的:

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']

如果节点从未签入,则返回nil,您可能希望根据代码使用不同的值。