У меня есть несколько компьютеров с Ubuntu, которые мне нужно настроить одинаково, поэтому я использую chef-solo против кулинарных книг шеф-повара в общем каталоге, смонтированном только для чтения, чтобы выполнить это. Я использую шеф-соло больше года, начиная с версии шеф-повара 10. Сегодня, после пересборки виртуальных машин с помощью упаковщика (я использую виртуальные машины для тестирования своих кулинарных книг, прежде чем использовать их на «настоящих» машинах, и периодически пересобираю их так что "свежие") мои поваренные книги начали давать сбой с ошибкой:
ERROR: Cookbook loaded at path(s) [/chef/cookbooks/ack-grep] has invalid metadata: The `name' attribute is required in cookbook metadata
Я использовал эти кулинарные книги много раз на нескольких машинах, неоднократно тестировал их на виртуальных машинах, но заметил, что на недавно перестроенной виртуальной машине был установлен шеф-повар 12.0.0. Старая виртуальная машина с Chef 11 по-прежнему отлично работает. Это справедливо для каждой из моих кулинарных книг.
Я начал исследовать и исследовать эту проблему с помощью Google, и все, что я нашел по этому вопросу, говорило о том, что нужно поместить запись «имя» в файл 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 -------
Единственный рецепт, который есть в этой кулинарной книге, очень прост:
------ Начать default.rb -------
# # Cookbook Name:: ack-grep # Recipe:: default package 'ack-grep' do action :install end
------ Конец default.rb -------
В одной статье, которую я прочитал во время исследования, говорилось, что создание файла metadata.json поможет, поэтому я выполнил команду:
метаданные поваренной книги ножа ack-grep
Эта команда создала файл metadata.json, который содержал аналогичное поле «имя» с той же информацией, что и файл metadata.rb, плюс много другой информации, все в формате json. Но повторный запуск той же команды chef-solo привел к точно такому же сообщению об ошибке.
Я предполагаю, что, поскольку он жалуется на отсутствующее поле в метаданных, которое существует как в файлах metadata.rb, так и в файлах metadata.json, я упускаю что-то еще, и сообщение об ошибке неверно. У кого-нибудь есть лучшая информация, чем эта, или кто-нибудь знает, что происходит? Может еще как обойти/исправить?