chef-solo run получает ошибку метаданных после обновления до 12.0.0

У меня есть несколько компьютеров с 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, я упускаю что-то еще, и сообщение об ошибке неверно. У кого-нибудь есть лучшая информация, чем эта, или кто-нибудь знает, что происходит? Может еще как обойти/исправить?


person RBWolf    schedule 08.12.2014    source источник
comment
Здравствуйте, можете ли вы открыть файл metadata.rb в Vim и проверить наличие непечатаемых символов? stupidunixlinuxtricks.blogspot.com/2008/03/   -  person Irving    schedule 11.12.2014
comment
Также проверьте, работает ли синхронизация файлов. Как правило, вы не хотите, чтобы файл metadata.json находился в папке во время работы, поэтому я бы рекомендовал его удалить.   -  person coderanger    schedule 12.12.2014
comment
Ирвинг, я сделал то, что вы предложили, но, к сожалению, не отображались непечатаемые символы, кроме новых строк. Все пробелы на самом деле были пробелами.   -  person RBWolf    schedule 19.12.2014
comment
coderanger, я удалил файл metadata.json. Синхронизация файлов вообще играет роль в chef-solo? Спасибо за помощь.   -  person RBWolf    schedule 19.12.2014


Ответы (1)


Быстрое решение — указать более старую версию Chef с параметром --bootstrap-version.

"соло-нож (подготовить/загрузить) user@host -P password --bootstrap-version 11.16.4-1"

person rosslyoung    schedule 12.12.2014
comment
До сих пор я помещал это как ошибку в главный репозиторий шеф-повара github. Я также обнаружил, что проблема не возникает при использовании chef-client -z, поэтому я использую это как обходной путь, хотя это намного медленнее. Спасибо за помощь. - person RBWolf; 19.12.2014