考虑一个简单的应用服务器/数据库服务器设置。你想在应用服务器上设置一些值,告诉它数据库服务器在哪里,并且你想在数据库服务器上设置一些权限,只允许来自应用服务器的连接。
搜索(:节点,“角色:数据库服务器”)
和
搜索(:节点,“角色:应用服务器”)
可以从任何一台机器的配方运行中获取所需的信息。但是,如果在您进行搜索时这台服务器不存在怎么办?有没有办法说“不要继续运行”并将其标记为未完成,以便下次在该机器上运行 chef-client 时,它会再试一次?
或者,是否有一些我想念的漂亮厨师服服务于这个用例(“通知”和“订阅”似乎它们几乎是我想要的,除了据我所知,它们只是关心节点内发生的事情)更好?我正在考虑的另一件事是尝试设置一个睡眠/检查循环以有效地暂停一个执行运行,而另一台服务器到达它需要的位置,但该解决方案似乎相当不雅,并且容易出现死锁问题更复杂的设置.