2012-11-12 3 views
1

Я пытался проверить некоторые из моих кулинарных книг, используя Vagrant. Я смог настроить свой бродячий ящик без проблем, но он терпит неудачу каждый раз, когда я пытаюсь предоставить (или делаю vagrant up с каталогом кулинарных книг, указанным в Vagrantfile).Vagrant & Custom Chef Resources

По какой-то причине кажется, что он пытается скомпилировать каждую кулинарную книгу в каталоге (независимо от того, используется ли она в списке запуска или нет), и она недовольна моими пользовательскими ресурсами. Каждый из них терпят неудачу с такой же ошибкой:

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 и не сталкивался с какими-либо проблемами, поэтому я довольно смущен. И почему он пытается скомпилировать кулинарию, которую я даже не использую, а также почему она не может скомпилировать пользовательские ресурсы.

Я использую "Vagrant 1.0.5", на "Mac OS X 10.8", с "VirtualBox 4.2.4", и это Vagrant сборки с помощью "Шеф-Solo 10.14.2"

ответ

3

Если вы загрузили свой бродячий бокс из vagrantbox.es, я уверен, что там установлен рубин 1.8.x, потому что они должны поддерживать как шеф-повар, так и марионетку. К сожалению, марионетка плохо работает с рубином 1.9.x.

В то же время рубин ввел новый синтаксис хэш в версии 1.9, который:

{ key1: value, key2: value ... } compared to old: 
{ :key1 => value, :key2 => value ... } 

Но рубин 1.8.x не поддерживает это. Использовать старый хэш-синтаксис

attribute :script, :kind_of => String, :required => true 

Или создать свой собственный бродячую коробку с рубином 1.9 установлен :)

+0

о том, что делает так много смысла, слова благодарности –

+1

Кроме того, Opscode публикует базовые коробки с шеф-поваром, установленные из «Омнибус «инсталляторы (включая их собственный Ruby 1.9.3) из нашего проекта« Bento »: https://github.com/opscode/bento - readme имеет ссылки для загрузки базовых ящиков. – jtimberman

Смежные вопросы