Chef infra 确保服务器已在Chef recipe中启动

Chef infra 确保服务器已在Chef recipe中启动,chef-infra,chef-recipe,Chef Infra,Chef Recipe,我是厨师新手。我有一个食谱,我需要启动服务器,然后等待服务器成功启动。到目前为止,我已经做到了这一点 服务“myserver”do 行动:开始 结束 执行“确保myserver启动”do 命令“curl http://{node['myserver']['http']['host']}:{node['myserver']['http']['port']}” 重试5次 重试\u延迟15 结束 这对我来说似乎不太合适,而且似乎是厨师脚本想要做的常见事情。等待服务器启动的惯用正确方法是什么?另一种方

我是厨师新手。我有一个食谱,我需要启动服务器,然后等待服务器成功启动。到目前为止,我已经做到了这一点

服务“myserver”do
行动:开始
结束
执行“确保myserver启动”do
命令“curl http://{node['myserver']['http']['host']}:{node['myserver']['http']['port']}”
重试5次
重试\u延迟15
结束

这对我来说似乎不太合适,而且似乎是厨师脚本想要做的常见事情。等待服务器启动的惯用正确方法是什么?

另一种方法是使用ruby块和属性来控制重试次数和重试之间的睡眠时间。这也有助于记录日志,引发错误。这里,当服务启动时,ZooKeeper中的一个条目作为znode创建,因此ruby_块正在检查znode_是否存在?。您可以将其替换为
curl

为什么您的服务在准备好之前不阻塞?在大多数服务中,init脚本或服务运行程序将阻塞,直到它准备好请求为止。这不是服务的实现方式。我们无法控制,因为它是第三方服务器。然后它看起来像是在中解决的。谢谢。我会试试看。我很惊讶没有比这更简单的了。把这变成一个答案,看看它是否有效。我会接受的。@StephenKing我不认为詹金斯的解决方案比我上面提出的更好。它基本上做同样的事情(在循环中打开url)。jenkins解决方案提供了更好的错误消息,但要复杂得多,因此我看不出在我的情况下有任何好处。链接已断开,,