Why can't “knife data bag from file” find existing json file on chef server?

Резюме:

I'm running into a problem with "knife data bag from file", where knife doesn't recognize the.json data bag file pulled down from a remote git repo.

Фон:

I'm currently trying to transition from chef-solo use to chef server while using the cookbooks, data bags and other chef info from our remote git repo.

В настоящее время я снял копию нашего репозитория git и установил путь к кулинарной книге и пути к пакету данных в knife.rb. Я также загружал поваренные книги, вносил коррективы и т. Д.

Подробности:

При попытке загрузить наши пакеты данных.json, выполнив "Добавление пакета данных ножа из файла FOLDER FILE", похоже, что оно работало до тех пор, пока я не выполнил "Список пакетов данных ножа", и оно оказалось пустым. Поэтому я решил попробовать добавить опцию редактирования в конце, чтобы увидеть, что загружается, если это так. Это ошибка, которую я получаю:

knife data bag from file local_settings test.json -e nano
ERROR: Could not find or open file 'test.json' in current directory or in 'data_bags/local_settings/test.json'

Файл пакета данных существует в надлежащем месте в протестированном рабочем файле JSON. Я также иногда получал сообщение об ошибке "не удалось открыть пакет данных" local_settings ".

Очевидно, я хотел бы сохранить путь к пакету данных в соответствующей папке git-репо, чтобы иметь возможность отслеживать изменения в более централизованном месте (наше git-репо, в отличие от сервера chef).

Любые решения, советы или указатели в правильном направлении приветствуются.

2 ответа

Решение

Я не думаю, что это правильно использовать -e nano вариант knife data bag from file (хотя справка командной строки подразумевает иное), но ее следует просто игнорировать. Эта ошибка означает, что нож не может найти указанный вами файл json. Когда вы говорите, что предмет был в правильном месте, где именно это было? Обратите внимание, что нож будет выглядеть относительно вашего текущего каталога, а не вашего chef-repo.

Решив эту проблему, вы столкнетесь с другой - вам нужно создать пакет данных, прежде чем вы сможете добавить в него элемент. Это должно появиться в knife data bag list вывод, как только он был создан:

 $ knife data bag create local_settings
Created data_bag[local_settings]
 $ knife data bag list
  local_settings

Документацию по "сумке данных ножа" можно найти здесь: http://wiki.opscode.com/display/chef/Managing+Data+Bags+With+Knife

я делаю knife data bag list и это приходит пустым.

Это означает, что сумка данных local_settings еще не создан.

Итак, должно быть создано:

$> knife data bag create local_settings
Created data_bag[local_settings]

Тогда он должен появиться в списке, если пакеты данных сервера:

$> knife data bag list
  local_settings

Затем {{test.json}} файл пакета данных может быть загружен.

Кроме того, вот несколько хороших объяснений того, что на самом деле происходит: [ссылка на вики CHEF].

Другие вопросы по тегам