我一直在尝试使用 Vagrant 测试我的一些食谱。我已经能够毫无问题地设置我的 Vagrant 盒子,但是每次我尝试配置(或vagrant up
使用 Vagrantfile 中指定的食谱目录)时它都会失败。
出于某种原因,它似乎正在尝试编译目录中的每本食谱(无论它是否在运行列表中使用)并且它对我的自定义资源不满意。他们每个人都因相同的错误而失败:
SyntaxError
-----------
compile error
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/expect/resources/script.rb:5: syntax error, unexpected ':', expecting $end
attribute :script, kind_of: String, required: true
^
它在此示例中抱怨的自定义资源是:
actions :create
default_action :create
attribute :script, kind_of: String, required: true
我的 Vagrantfile 的相关部分是:
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "/Users/0x783czar/Development/Work/Chef-Repos/chef2/cookbooks"
chef.roles_path = "/Users/0x783czar/Development/Work/Chef-Repos/chef2/roles"
chef.data_bags_path = "/Users/0x783czar/Development/Work/Chef-Repos/chef2/data_bags"
chef.add_recipe "build-essential"
chef.add_recipe "mongodb"
# You may also specify custom JSON attributes:
# chef.json = { :mysql_password => "foo" }
end
我在 Chef-Solo 中使用了同样的食谱和资源,没有遇到任何问题,所以我很困惑。既是为什么它试图编译我什至没有使用的食谱,也是为什么它无法编译自定义资源。
我在“Mac OS X 10.8”上使用“Vagrant 1.0.5”和“VirtualBox 4.2.4”,而这个 Vagrant 构建使用的是“Chef-Solo 10.14.2”