Я, вероятно, неправильно понял всю концепцию: у меня есть работающая виртуальная машина Vagrant с Ubuntu 12.04, поверх нее я хочу установить несколько пакетов и файлов конфигурации. Я установил их в Chef, по пути cookbooks / my_project / recipes у меня есть файл vagrant-dev.rb со всеми инструкциями. Теперь моя конфигурация Vagrant в Vagrantfile должна быть проблемой здесь:
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "cookbooks/my_project/recipes"
chef.add_recipe "vagrant-dev.rb"
end
и когда я загружаю виртуальную машину, я получаю
FATAL: Chef::Exceptions::CookbookNotFound: Cookbook vagrant-dev.rb not found.
Я пробовал без .rb в конце. Думаю, это совсем другое дело, и я использую его неправильно. Но после поиска я не смог найти ничего, что объясняло бы, как это сделать правильно.
При использовании повара все рецепты должен быть в кулинарных книгах. Похоже, у вас уже есть кулинарная книга, и вы просто ошибаетесь, но я расскажу обо всем, так что вы можете дважды проверить.
Кулинарные книги - это буквально набор файлов рецептов, немного метаданных и, возможно, некоторые другие файлы (например, шаблоны или пакеты данных). Таким образом, вы не можете напрямую включить файл .rb, вам нужно указать его кулинарную книгу, а затем имя файла (без .rb), чтобы запустить его.
Структура простой поваренной книги должна выглядеть так:
SomeCookbook
readme.md # needed for the long_description in metadata to work
metadata.rb # contains the actual information for the cookbook
recipes # Holds all the cookbook's recipies
default.rb # This is the default recipe, run if one isn't specified
otherRecipe.rb
templates # Templates that can be called by the cookbook
default
some-erb-style-template.erb
Имя основного каталога не имеет значения, а каталог шаблонов необязателен.
metadata.rb
name "SomeCookbook"
maintainer "Me"
maintainer_email "support@me.com"
license "None"
description "Does something cool"
long_description IO.read(File.join(File.dirname(__FILE__), 'readme.md'))
version "0.0.1"
supports "centos"
Следуйте приведенной выше структуре и обязательно вставьте свой рецепт в папку рецептов.
Затем добавьте это в свой бродячий файл:
chef.add_recipe "SomeCookbook::vagrant-dev"
Надеюсь, что вышесказанное немного проясняет ситуацию.