Пакеты данных Chef (JSON): как использовать один файл с несколькими элементами

Я пытаюсь использовать только один файл в своем пакете данных для хранения нескольких элементов (специально для пользователей кулинарная книга). Во всех примерах показаны изолированные объекты JSON. Как сохранить несколько в одном файле?

я пытался

{
  "id": "1"
},
{
  "id": "2"
}

а также

[
    {
      "id": "1"
    },
    {
      "id": "2"
    }
]

а также

{
  "id": "1"
}
{
  "id": "2"
}

Я собираюсь:

Net::HTTPFatalError: users_manage[xxxxx] (common::default line 76) had an error: Net::HTTPFatalError: 500 "Internal Server Error"
/opt/chef/embedded/lib/ruby/2.1.0/net/http/response.rb:119:in `error!'
/opt/chef/embedded/lib/ruby/gems/2.1.0/gems/chef-12.8.1/lib/chef/http.rb:145:in `request'
/opt/chef/embedded/lib/ruby/gems/2.1.0/gems/chef-12.8.1/lib/chef/http.rb:110:in `get'
/opt/chef/embedded/lib/ruby/gems/2.1.0/gems/chef-12.8.1/lib/chef/search/query.rb:158:in `call_rest_service'
/opt/chef/embedded/lib/ruby/gems/2.1.0/gems/chef-12.8.1/lib/chef/search/query.rb:87:in `search'
/opt/chef/embedded/lib/ruby/gems/2.1.0/gems/chef-12.8.1/lib/chef/dsl/data_query.rb:39:in `search'

Я использую chef-solo -z с поваренной книгой для индивидуального поиска шеф-повара.

Нельзя ли передать массив элементов из одного файла?


person aaro    schedule 09.05.2016    source источник
comment
Стоит отметить, что chef-solo -z не существует. Либо используйте chef-client -z, либо chef-solo + chef-solo-search. То или другое, а не оба.   -  person coderanger    schedule 09.05.2016


Ответы (2)


Вы не храните несколько элементов в одном файле пакета данных в Chef. Просто укажите его в отдельных файлах. Так работает Шеф.

person StephenKing    schedule 09.05.2016
comment
Спасибо, Стефан. Итак, если у меня 500 пользователей, мне нужно будет иметь 500 файлов в моем пакете данных пользователей? Нет способа обойти это? - person aaro; 09.05.2016
comment
Насколько я знаю, нет. - person StephenKing; 09.05.2016
comment
Chef сам по себе является API и не заботится о файлах как таковых, но chef-zero использует их для формирования своей базы данных, поэтому для chef-client -z они вам нужны. - person coderanger; 09.05.2016

Можете ли вы попробовать что-то вроде: { "id": "users", "users": [ { ... user 1 info ... }, { ... user 2 info ... }, { ... user 3 info ... }, ... ] }

person Martin    schedule 09.05.2016
comment
По крайней мере, это будет несовместимо с кулинарной книгой users. Конечно, вы можете втиснуть все данные в один элемент пакета данных, но это не так. - person StephenKing; 09.05.2016
comment
все равно попробовал - кажется, он не может проанализировать объект: ` NoMethodError ------------- неопределенный метод 'каждый' для nil: NilClass Cookbook Trace: ---------- ----- /srv/chef/local-mode-cache/cache/cookbooks/users/providers/manage.rb:60:in `блок (2 уровня) в class_from_file' /srv/chef/local-mode-cache /cache/cookbooks/users/providers/manage.rb:58:in `блок в class_from_file' ` - person aaro; 09.05.2016