使用 chef,如何确保在依赖于服务器的客户端之前配置服务器?

使用 chef,如何确保在依赖于服务器的客户端之前配置服务器?

我正在部署一个分布式服务,该服务在多个节点上使用 NFS 共享。在此场景中,有一个主节点导出 NFS 共享,还有多个从属节点必须挂载此导出。

使用 chef,我能够配置主节点。主节点完成后,我可以并行配置从节点。但是,如果 chef-client 在所有节点上(大致)同时启动,则从节点会失败,因为服务器上的 NFS 共享尚不存在。

使用 chef,我如何确保在从属服务器启动之前完成主服务器的配置?我认为从属服务器暂停(并可能在几分钟后超时)等待 NFS 导出可用是可以接受的,但如果我能保证在允许从属服务器上的 chef-client 继续之前主服务器已完全配置(所有配方/角色),那将是最好的。

答案1

一般来说,最好的方法是不要确保一切顺利。以在依赖项不可用时优雅地失败的方式编写配方代码,然后使用 chef-client 的守护进程模式(或从 cron 运行),这样它就会在需要时不断尝试,直到成功。

相关内容