1

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 で使用しましたが、問題は発生しなかったので、かなり混乱しています。私が使用していないクックブックをコンパイルしようとしている理由と、カスタムリソースをコンパイルできない理由の両方によって。

「Vagrant 1.0.5」、「Mac OS X 10.8」、「VirtualBox 4.2.4」を使用しています。この Vagrant ビルドは「Chef-Solo 10.14.2」を使用しています。

4

1 に答える 1

3

Vagrantbox.esからVagrantボックスをダウンロードした場合は、シェフとパペットの両方をサポートする必要があるため、ruby1.8.xがインストールされていると確信しています。残念ながら、puppetはruby1.9.xではうまく機能しません。

同時に、rubyは1.9で次のような新しいハッシュ構文を導入しました。

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

しかし、ruby1.8.xはそれをサポートしていません。古いハッシュ構文を使用する

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

または、ruby1.9がインストールされた独自のvagrantボックスを作成します:)

于 2012-11-12T22:06:55.600 に答える