Undefined метод "cheffish" для nil: NilClass, при обеспечении шеф-повара бродягой

Я пытаюсь запустить django-сервер в ящике Vagrant с помощью Chef, но я застрял на нем в течение нескольких часов и не могу найти что-либо в Интернете. Соответствующий бит моего бродячего файла выглядит так: (извините за бедный отступ) Кроме того, в поле работает centos7.

config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "cookbooks"
chef.add_recipe "apache2"
chef.add_recipe "apt"
chef.add_recipe "bluepill"
chef.add_recipe "build-essential"
chef.add_recipe "chef-sugar"
chef.add_recipe "chef_handler"
chef.add_recipe "cms-scanner"
chef.add_recipe "gunicorn"
chef.add_recipe "homebrew"
chef.add_recipe "install_from"
chef.add_recipe "iptables"
chef.add_recipe "logrotate"
chef.add_recipe "metachef"
chef.add_recipe "mysql"
chef.add_recipe "nginx"
chef.add_recipe "ohai"
chef.add_recipe "openssl"
chef.add_recipe "packagecloud"
chef.add_recipe "pacman"
chef.add_recipe "python"
chef.add_recipe "rbac"
chef.add_recipe "redis"
chef.add_recipe "runit"
chef.add_recipe "smf"
chef.add_recipe "windows"
chef.add_recipe "yum"
chef.add_recipe "yum-epel"
end

И я получаю эту ошибку, когда я запускаю vagrant provision

 C:\Users\garrowa\Desktop\cms-vagrant>vagrant provision
    ==> default: Running provisioner: chef_solo...
    ==> default: Detected Chef (latest) is already installed
    Generating chef JSON and uploading...
    ==> default: Running chef-solo...
    ==> default: [2015-06-30T18:04:53-04:00] INFO: Forking chef instance to converge
    ...
    ==> default: [2015-06-30T18:04:53-04:00] INFO: *** Chef 12.4.0 ***
    ==> default: [2015-06-30T18:04:53-04:00] INFO: Chef-client pid: 4398
    ==> default: [2015-06-30T18:04:55-04:00] INFO: Setting the run_list to ["recipe[
    apache2]", "recipe[apt]", "recipe[bluepill]", "recipe[build-essential]", "recipe
    [chef-sugar]", "recipe[chef_handler]", "recipe[cms-scanner]", "recipe[gunicorn]"
    , "recipe[homebrew]", "recipe[install_from]", "recipe[iptables]", "recipe[logrot
    ate]", "recipe[metachef]", "recipe[mysql]", "recipe[nginx]", "recipe[ohai]", "re
    cipe[openssl]", "recipe[packagecloud]", "recipe[pacman]", "recipe[python]", "rec
    ipe[rbac]", "recipe[redis]", "recipe[runit]", "recipe[smf]", "recipe[windows]",
    "recipe[yum]", "recipe[yum-epel]"] from CLI options
    ==> default: [2015-06-30T18:04:55-04:00] INFO: Run List is [recipe[apache2], rec
    ipe[apt], recipe[bluepill], recipe[build-essential], recipe[chef-sugar], recipe[
    chef_handler], recipe[cms-scanner], recipe[gunicorn], recipe[homebrew], recipe[i
    nstall_from], recipe[iptables], recipe[logrotate], recipe[metachef], recipe[mysq
    l], recipe[nginx], recipe[ohai], recipe[openssl], recipe[packagecloud], recipe[p
    acman], recipe[python], recipe[rbac], recipe[redis], recipe[runit], recipe[smf],
     recipe[windows], recipe[yum], recipe[yum-epel]]
    ==> default: [2015-06-30T18:04:55-04:00] INFO: Run List expands to [apache2, apt
    , bluepill, build-essential, chef-sugar, chef_handler, cms-scanner, gunicorn, ho
    mebrew, install_from, iptables, logrotate, metachef, mysql, nginx, ohai, openssl
    , packagecloud, pacman, python, rbac, redis, runit, smf, windows, yum, yum-epel]

    ==> default: [2015-06-30T18:04:55-04:00] INFO: Starting Chef Run for localhost
    ==> default: [2015-06-30T18:04:55-04:00] INFO: Running start handlers
    ==> default: [2015-06-30T18:04:55-04:00] INFO: Start handlers complete.
    ==> default: [2015-06-30T18:04:55-04:00] ERROR: Running exception handlers
    ==> default: [2015-06-30T18:04:55-04:00] ERROR: Exception handlers complete
    ==> default: [2015-06-30T18:04:55-04:00] ERROR: undefined method `cheffish' for
    nil:NilClass
    ==> default: [2015-06-30T18:04:55-04:00] FATAL: Chef::Exceptions::ChildConvergeE
    rror: Chef run process exited unsuccessfully (exit code 1)
    Chef never successfully completed! Any errors should be visible in the
    output above. Please fix your recipes so that they properly complete.

Что меня действительно смущает, так это то, что я не могу найти ссылки на cheffish в любой из этих кулинарных книг.

Я попытался исключить все строки chef.add_recipe, кроме ohai, и, альтернативно, yum, но я все равно получаю ту же ошибку. (Я запускаю vagrant reload и vagrant provision между попытками. Я также попробовал sshing в поле, удалив драгоценный камень cheffish, запустив vagrant provision и переустановив камень cheffish и запустив vagrant provision, но безрезультатно.

Ответ 1

Наконец-то понял. Как отмечалось в комментариях, эта проблема вводится в chef v. 12.4.0, я добавил строку chef.version = "12.3.0" в блок обеспечения и теперь она работает.

Ответ 2

для меня решение заключалось в том, чтобы убедиться, что каждая кулинарная книга, которую я использовал, имела в ней атрибут "имя" с названием кулинарной книги. "redis", "install_from" и кулинарные книги "metachef" отсутствовали в поле имени из метаданных .rb

chef-client v12.3.0 помог раскрыть это, 12.4.1 не показывал мне ничего полезного

Ответ 3

Ошибка для меня была связана с двумя настраиваемыми кулинарными книгами, в которых кто-то имел то же имя в metadata.rb, исправляя его, исправил его.

Ответ 4

У меня была точно такая же ошибка при использовании пользовательской кулинарной книги с вызовом include_recipe в верхней части рецепта в этой пользовательской кулинарной книге. Для меня это добавило метаданные .rb в пользовательскую кулинарную книгу. Он должен содержать имя и зависит от разделов. Надеюсь, что это поможет

Ответ 5

Это происходит, если вы попытаетесь использовать include_attribute 'foo' в файле metadata.rb вместо файла атрибутов.

Ответ 6

Я тоже получил эту ошибку в тестовой кухне, но не вызван ошибкой. Сообщение об ошибке является исключительно загадочным для общего случая отсутствия ограничения поваренной книги (т.е. Имя или версия поваренной книги, которые не могут быть найдены). В моем случае, из .kitchen.yml, я включил среду с определенными ограничениями поваренной книги, а затем указал конфликтующие ограничения версий в Berksfile. Это было глупо, поэтому не делайте этого!

Ответ 7

Получено это из-за отсутствия name из поваренной книги metadata.rb. Добавление name исправлено.

Сообщение, которое мы видим, явно является ошибкой шеф-повара и, надеюсь, скоро будет исправлено, но тем временем, возможно, это поможет любому, кто совершил ту же ошибку, что и я.