在配方中获取上次签入节点的时间

Get last time a node checked in, in a recipe

我知道我可以使用 knife 获取节点上次签入的时间,但我如何在 recipe 中获取此信息?

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

我在网上看到很多人使用 ohai_time 属性,但看起来这只是记录最后一次 chef-client 运行 而不是最后一次成功签入。 chef-client 每 30 分钟 运行 在本地运行一次,如果 chef-client 运行s,将 ohai_time 仍然更新,但它无法联系服务器以成功签入?如果是这样,那么使用它就没有意义了。

没有一个超级好的方法来做到这一点。 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']

这将 return nil 如果节点从未签入过,您可能希望根据您的代码使用不同的值。