
Краткое содержание:
У меня возникла проблема с «Knife data bag from file», когда knife не распознает файл .json data bag, извлеченный из удаленного репозитория git.
Фон:
В настоящее время я пытаюсь перейти от использования chef-solo к chef-server, используя при этом кулинарные книги, пакеты данных и другую информацию chef из нашего удаленного репозитория git.
В настоящее время я вытащил копию нашего git-репозитория и установил путь к кулинарной книге и пути к пакету данных в knife.rb. Я также загрузил кулинарные книги, внес изменения и т. д.
Подробности:
При попытке загрузить наши пакеты данных .json с помощью "knife data bag add from file FOLDER FILE" все работает, пока я не делаю "knife data bag list", и он не оказывается пустым. Поэтому я решил попробовать добавить опцию редактирования в конце, чтобы посмотреть, что загружается, если это так. Вот ошибка, которую я получаю:
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).
Любые решения, советы или указания в правильном направлении приветствуются.
решение1
Я не думаю, что допустимо использовать -e nano
option knife data bag from file
(хотя справка командной строки подразумевает иное), но ее следует просто игнорировать. Эта ошибка означает, что knife не может найти указанный вами json-файл. Когда вы говорите, что элемент находится в правильном месте, где именно он был? Обратите внимание, что knife будет искать относительно вашего текущего каталога, а не вашего chef-repo.
После устранения этой проблемы вы столкнетесь с другой — вам нужно создать пакет данных, прежде чем вы сможете добавить в него элемент. Он должен появиться в выводе knife data bag list
сразу после создания:
$ knife data bag create local_settings
Created data_bag[local_settings]
$ knife data bag list
local_settings
Документацию по «Knife Data Bag» можно найти здесь:http://wiki.opscode.com/display/chef/Управление+данными+сумками+с+ножом
решение2
Я делаю это
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].