У меня есть несколько машин ubuntu, которые мне нужно настроить одинаково, поэтому я использую повара-шеф-повара против поваренных книг поваров в общем каталоге, смонтированном только для чтения, чтобы выполнить это. Я использую шеф-повара более года, начиная с шеф-повара версии 10. Сегодня, после восстановления виртуальных машин с использованием упаковщика (я использую виртуальные машины для тестирования моих кулинарных книг, прежде чем использовать их на «настоящих» машинах, и периодически их перестраивать так что есть «свежие») мои поваренные книги начали неудачу с ошибкой:chef-solo run get metadata error после обновления до 12.0.0
ERROR: Cookbook loaded at path(s) [/chef/cookbooks/ack-grep] has invalid metadata: The `name' attribute is required in cookbook metadata
Я использовал эти поваренные книги много раз на нескольких машинах, проверили их несколько раз в виртуальных машинах, но я заметил, что он установил недавно перестроен В.М. шеф-повар 12.0.0. Более старая VM работает шеф-повар 11 все еще отлично работает. Это справедливо для каждой из моих кулинарных книг.
Я начал исследовать и исследовать эту проблему с помощью google, и все, что я нашел по этому вопросу, сказал, чтобы поместить запись «name» в файл metadata.rb. Но мои файлы metadata.rb уже содержат запись «имя». Например, вот мой файл метаданных (под редакцией не взрывать свою личную информацию все в Google-умелым форуме):
---- Begin metadata.rb ---------
name 'ack-grep'
maintainer 'me'
maintainer_email '[email protected]'
license 'All Rights Reserved'
description 'Installs/Configures ack-grep'
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
version '0.1.0'
------ End metadata.rb -------
Единственный рецепт, который находится в этой кулинарной книге очень просто:
------ Begin default.rb -------
# # Cookbook Name:: ack-grep # Recipe:: default package 'ack-grep' do action :install end
------ End default.rb -------
Одна статья, что я прочитал в ходе исследований, сказал создавая metadata.json файл поможет, так что я выполнил команду:
knife cookbook metadata ack-grep
Эта команда создала metadata.json файл, в котором содержится аналогичное поле «имя» с ту же информацию, что и файл metadata.rb, а также много другой информации, все в формате json. Но запуск одной и той же команды chef-solo снова привел к тому же сообщению об ошибке.
Я предполагаю, что, поскольку он жалуется на недостающее поле в метаданных, которое существует как в файлах metadata.rb, так и в файлах metadata.json, я пропускаю что-то еще, а сообщение об ошибке неверно. У кого-нибудь есть лучшая информация, чем эта, или знаете, что происходит? Может быть, даже как обойти/исправить?
Привет, вы можете открыть файл metadata.rb в Vim и проверить для любой неотрицательной печатать символы? http://stupidunixlinuxtricks.blogspot.com/2008/03/show-non-printable-characters-in-vi.html – Irving
Также проверьте, что синхронизация файлов работает. В общем, вы не хотите иметь метаданные.json в папке во время работы, поэтому я бы рекомендовал удалить это. – coderanger
Ирвинг, я сделал то, что вы предлагали, но, к сожалению, никаких непечатаемых символов, кроме строк новой строки, не было. Все пробелы были фактически пробелами. – RBWolf