Chef infra 如何以json的形式从chef server获取所有节点对象?

Chef infra 如何以json的形式从chef server获取所有节点对象?,chef-infra,chef-recipe,knife,Chef Infra,Chef Recipe,Knife,我可以使用此命令从chef服务器返回一个节点对象: knife node show -l --format=json <node_name> node show-l--format=json 我想让所有节点对象(如json)都能够编写自己的报告 有没有直接查询chef DB的方法?借助unix管道,我们可以很容易地实现这一点 获取所有节点名称很容易 knife node list 结合一些过滤器 knife node list | grep myhost 获取您感兴趣的所有主

我可以使用此命令从chef服务器返回一个节点对象:

knife node show -l --format=json <node_name>
node show-l--format=json
我想让所有节点对象(如json)都能够编写自己的报告


有没有直接查询chef DB的方法?

借助unix管道,我们可以很容易地实现这一点

获取所有节点名称很容易

knife node list
结合一些过滤器

knife node list | grep myhost
获取您感兴趣的所有主机的节点

knife node list | grep myhost | xargs -n 1 knife node show -l -Fj

刀搜索“*:*”--format=json
可能更符合您的需要。还可以查看
knife下载节点/
,将它们作为文件获取。

这是最好的方法吗?这需要很长时间。我忍不住想,如果可能的话,直接DB查询会快得多。数据库中的节点对象是作为json存储的,还是在使用刀子命令返回给您时由Chef server动态创建的json对象?您可以使用xargs上的
-P
选项并行执行,即
xargs-n 1-P 50
我可以直接在Chef server上查看节点对象吗?json文件是否仅存储在Chef服务器的文件系统中?否,节点数据(以及大多数其他数据)位于Postgres数据库中。但是,您不应该直接与该数据库对话,因为它被视为一个内部组件,可以随时更改。