我可能弄错了整个概念:我有一个工作在Ubuntu 12.04 Vagrant虚拟机,最重要的是我想安装一些软件包和configuration文件。 我有他们设置在厨师,在pathcookbooks / my_project / recipes我有一个vagrant-dev.rb文件的所有说明。 现在我的Vagrant文件中的Vagrantconfiguration一定是这里的问题:
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。 我想这是一个完全不同的问题,我没有用正确的方法。 但search后,我找不到任何解释如何正确执行的内容。
当使用厨师时,所有食谱必须在食谱中。 看起来你可能已经把它放在食谱里了,只是把它叫错了,但是我会把它全部覆盖掉,所以你可以仔细检查一下。
Cookbooks实际上只是一个配方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"
遵循上述结构,并确保将您的食谱粘贴到食谱文件夹中。
然后把这个添加到你的stream浪文件中:
chef.add_recipe "SomeCookbook::vagrant-dev"
希望以上清楚了一点。