6

私は料理本を管理するためにBerkshelfを使い始めようとしています。手順は次のとおりです

$ berks init  # and use a custom Vagrant box image
$ vim Berksfile  # and put cookbook 'git'
$ berks install
$ vagrant up

クックブックを使用してVMをプロビジョニングする最後のステップを期待しますが、次のgitようになります。

$ bin / vagrant up
/Users/pmu/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/hashie-2.0.0/lib/hashie/mash.rb:80:警告:`object_id'を再定義深刻な問題を引き起こす可能性があります
[デフォルト]ベースボックス'Ubuntu-11.04'をインポートしています...
[デフォルト]NATネットワーキングに一致するMACアドレス...
[デフォルト]以前に設定された転送ポートをクリアします。
[デフォルト]転送ポート...
[デフォルト]-22=>2222(アダプター1)
[Berkshelf]クックブックのインストール...
[Berkshelf] gitの使用(2.3.0)
[Berkshelf] dmgの使用(1.1.0)
[Berkshelf]ビルドエッセンシャルの使用(1.3.4)
[Berkshelf] yumの使用(2.1.0)
[Berkshelf]ウィンドウの使用(1.8.4)
[Berkshelf] chef_handlerの使用(1.1.4)
[Berkshelf] runitの使用(1.0.6)
[デフォルト]共有フォルダのメタデータを作成しています...
[デフォルト]以前に設定されたネットワークインターフェースをクリアします。
[デフォルト]構成に基づいたネットワークインターフェースの準備...
[デフォルト]VMの起動...
[デフォルト]VMが起動するのを待っています。これには数分かかる場合があります。
[デフォルト]VMが起動し、使用できるようになりました。
[デフォルト]ネットワークインターフェースの設定と有効化...
[デフォルト]ホスト名を設定しています...
[デフォルト]共有フォルダのマウント...
[デフォルト]-v-root:/ vagrant
[デフォルト]-v-csc-1:/ tmp / vagrant-chef-1 / chef-solo-1 / coolbooks
[デフォルト]実行中のプロビジョナー:Vagrant :: Provisioners :: ChefSolo .. ..
[デフォルト]シェフJSONの生成とアップロード...
[デフォルト]chef-soloを実行しています...
stdin:ttyではありません
[2013-02-24T12:51:04 + 00:00]情報:***シェフ10.18.2 ***
[2013-02-24T12:51:05 + 00:00]情報:JSONからrun_listを["recipe [berkshelf-test::default]"]に設定しています
[2013-02-24T12:51:05 + 00:00]情報:実行リストは[レシピ[berkshelf-test::default]]です
[2013-02-24T12:51:05 + 00:00]情報:実行リストが[berkshelf-test::default]に展開されます
[2013-02-24T12:51:05 + 00:00]情報:ubuntu-11.04のChefRunを開始しています
[2013-02-24T12:51:05 + 00:00]情報:開始ハンドラーを実行しています
[2013-02-24T12:51:05 + 00:00]情報:開始ハンドラーが完了しました。
[2013-02-24T12:51:05 + 00:00]エラー:例外ハンドラーを実行しています
[2013-02-24T12:51:05 + 00:00]エラー:例外ハンドラーが完了しました
[2013-02-24T12:51:05 + 00:00]致命的:Stacktraceが/tmp/vagrant-chef-1/chef-stacktrace.outにダンプされました
[2013-02-24T12:51:05 + 00:00]致命的:Chef :: Exceptions :: CookbookNotFound:クックブックberkshelf-テストが見つかりません。別のクックブックからberkshelf-testをロードする場合は、メタデータで依存関係を構成していることを確認してください
シェフが正常に完了したことはありません!エラーはすべてに表示されます
上記の出力。レシピが正しく完了するように修正してください。

Vagrantfileのchef-solo部分:

  config.vm.provision:chef_solo do | chef |
    chef.json = {
      :mysql => {
        :server_root_password =>'rootpass'、
        :server_debian_password =>'debpass'、
        :server_repl_password =>'replpass'
      }
    }

    chef.run_list = [
      "レシピ[berkshelf-test::default]"
    ]
  終わり
4

2 に答える 2

9

この場合、問題はchef.run_listVagrantfileにあります。これは、「berkshelf-test」クックブックから「デフォルト」レシピをロードするようにChefに指示します。テストにgitクックブックを使用している場合は、"recipe[git::default]"代わりに使用することをお勧めします。

require 'berkshelf/vagrant'Vagrantfileの先頭に追加する必要がある場合もあります。詳細については、Berkshelfホームページの「VagrantWithBerkshelf」セクションを参照してください。

于 2013-02-24T13:14:00.160 に答える
2

このエラーが発生しました。根本的な原因は、プラグインが共有フォルダーを処理する方法の問題でした。この問題の回答で修正されました:Vagrant + Chef:「Chefが必要とする共有フォルダーが仮想マシンにありません」というプロビジョニングのエラー。

rm .vagrant/machines/default/virtualbox/synced_folders
vagrant reload --provision
于 2015-04-08T21:27:32.167 に答える