2016-11-30 14 views
0

Я пытаюсь протестировать рецепт, в котором используется кулинарная книга сообщества sudo.Ресурс не найден при использовании кулинарной книги berks в тестовой кухне

Я установил BERKS локально, я создал Berksfile и добавил к нему следующий:

source "https://supermarket.getchef.com" 

metadata 

cookbook 'sudo' 

и выдал следующие команды: berks install и berks vendor

, тем не менее, я все еще получаю ошибку

[2016-11-30T12:32:53+00:00] ERROR: No resource or method named `sudo' for `Chef::Recipe "default"' 

, указывающий на эту часть моего рецепта:

49>> sudo 'reboot_bot' do 
50: user 'reboot_bot' 
51: nopasswd true 
52: commands [ 
53:  '/sbin/reboot' 
54: ] 
55: end 

Что-нибудь еще, что нужно сделать, и мне не хватает? Что-то я делаю неправильно?

+0

Какой тест вы используете? если chefspec вам придется включить chefspec/berkshelf в spec_helper. см. [Документация] (https://github.com/sethvargo/chefspec#berkshelf) от chefspec – Tensibai

+0

, фактически не выполняющая тест perse, просто проверяя рецепт. Я хочу запустить его на кухне, прежде чем запускать в prod. Но рецепт отказывается бежать, как вы можете видеть в моем вопросе –

+1

Запуск на кухне работает функциональный тест. Btw, кухня должна использовать berkshelf для решения зависимостей, вы добавили 'depend 'sudo'' в свою cookbook' metadata.rb' право? (если нет, вы тоже, клиент шеф-повара не будет читать Berksfile, и это причина варианта метаданных в нем, возьмите зависимости из файла метаданных, указав их в том случае, когда вы хотите использовать другой источник, кроме по умолчанию - по умолчанию) – Tensibai

ответ

1

Вам не нужно указывать это в Berksfile, то есть только для переопределений, когда вам нужно загрузить из нестандартного местоположения. Добавьте поваренную книгу sudo в зависимость от вашей собственной кулинарной книги в metadata.rb, а затем Berks ее увидят, и, что более важно, шеф-повар также увидит ее (шеф-повар не знает о Berksfiles) и обязательно загрузит пользовательский ресурс.