0

我有厨师、工作站和一些通过托管厨师提供的节点。我需要在 ruby​​ 脚本中的节点上做一些工作,而不是食谱/食谱,所以我Chef::Search用来查询它们。

我的脚本中有一个数组Chef::Nodes,我想获得每个节点的厨师客户端的句柄,以便我可以在每个节点上运行一个配方。请记住,我不是在进行常规的厨师运行,而是需要模仿厨师运行的工作:拉下节点,扩展它们run_lists并根据需要在它们上运行食谱。

为什么?
因为,我不只是供应;我需要检查节点的状态并选择一个特定的节点来运行配方。这些节点配备了 mongo,它们需要作为副本集进行维护。我无法运行顺序配方,也无法从其中一个节点运行。

所以我的需要是: 给定Chef::Node我从 a 得到的 a Chef::Search::Query,如何获得它chef-client或将其加载到新的中Chef::Client

我已经广泛地查看APIChef::Client课程,但似乎并没有清楚地告诉我如何。有初始化和加载节点,但没有任何东西需要一个节点。

4

1 回答 1

0

我认为您可以使用knife-exec完成很多您要求的事情。如果您有 API 密钥,它允许您使用 Ruby 脚本操作 Chef 服务器上的数据。这包括搜索、节点、角色等等。我主要用它来批量更新大量节点上的属性,而不是knife node edit手动进行。

这并没有回答如何chef-client在节点上运行。也许您可以运行“ssh node1 sudo chef-client”或使用knife-ssh来执行此操作。

于 2013-04-20T22:11:19.440 回答