2016-08-31 1 views
2

я могу использовать эту команду, чтобы вернуть один объект узла от сервера повара:Как получить все объекты узла с сервера шеф-повара в форме json?

knife node show -l --format=json <node_name> 

Я хочу, чтобы все объекты узла (как JSON), чтобы иметь возможность писать свои собственные отчеты.

Есть ли способ напрямую запросить базу данных шеф-повара?

ответ

3

knife search '*:*' --format=json, вероятно, больше того, что вы хотите. Также проверьте knife download nodes/, чтобы получить их как файлы.

+0

Могу ли я просматривать объекты узла непосредственно на сервере Chef? json-файлы, только что хранящиеся в файловой системе Chef Server? – red888

+0

Нет, данные узла (и большинство других данных) находятся в базе данных Postgres. Вы не должны напрямую обращаться к этой базе данных, поскольку она считается внутренним компонентом и может меняться в любое время. – coderanger

0

С помощью трубы unix мы можем достичь этого очень легко.

Получение всех имен узлов легко

knife node list 

Объединить с некоторым фильтром

knife node list | grep myhost 

Получить узел для всех хостов вы заинтересованы в

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

Это лучший способ? Это занимает очень много времени. Я не могу не думать, что прямой запрос БД будет намного быстрее, если это возможно. Являются ли узловые объекты хранятся в БД как json или это json-объект, созданный динамически сервером Chef, когда он возвращается вам при использовании этой команды ножа? – red888

+0

Вы можете использовать опцию '-P' на xargs, чтобы сделать это параллельно, то есть ' xargs -n 1 -P 50' –

Смежные вопросы