
Я, вероятно, неправильно понял всю концепцию: у меня есть рабочая Vagrant VM с 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 в конце. Думаю, это совсем другое дело, и я не правильно его использую. Но после поиска я не смог найти ничего, что объяснило бы, как это правильно сделать.
решение1
При использовании шеф-повара все рецептыдолженбыть в кулинарных книгах. Похоже, что у вас это уже есть в кулинарной книге, и вы просто называете это неправильно, но я расскажу обо всем, чтобы вы могли перепроверить.
Кулинарные книги — это буквально просто набор файлов рецептов 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 "[email protected]"
license "None"
description "Does something cool"
long_description IO.read(File.join(File.dirname(__FILE__), 'readme.md'))
version "0.0.1"
supports "centos"
Следуйте структуре выше и убедитесь, что вы вставили свой рецепт в папку recipes.
Затем добавьте это в ваш файл vagrant:
chef.add_recipe "SomeCookbook::vagrant-dev"
Надеюсь, вышеизложенное немного прояснит ситуацию.