6

私は Vagrant n00b で、knifechef-solo を使用して非常にシンプルな CentOS LAMP ボックスをセットアップしているため、Vagrant と Chef のコマンドをうまく連携させるのに問題があります。

この問題の簡単な概要は次のとおりです。

  1. CentOS 6.3 と vagrantbox.es の Chef ベース ボックスを使用して、基本的な Vagrantfile を作成しました。この gistで基本を確認できます。
  2. knife cookbook site install nameofcookbookに配置する構成を使用して、すべてのクックブックをダウンロードしました./chef/cookbooks
  3. この要点vagrant upで基本を確認できます。
  4. 私はApache、PHPなどをテストしました。すべて問題ありません。
  5. VM が実行されている状態で、knife を実行して別のパッケージ (この場合は i3) を追加します。
  6. これ以降、Vagrant は VM でさまざまなタスクを実行できなくなります。
  7. 実行するvagrant provisionと、このようなエラーが発生します

    The chef binary (either `chef-solo` or `chef-client`) was not found on
    the VM and is required for chef provisioning. Please verify that chef
    is installed and that the binary is available on the PATH.
    
  8. 実行するvagrant haltと、ssh コマンドがゼロ以外のエラー コードで終了したというエラーが表示されます。

  9. ただし、実行することはできvagrant ssh、(a)chef-solo が実際にボックスに存在し、(b)ボックス内のコマンドラインからシャットダウンできることを確認します。
  10. 実行するvagrant upと、次のようなエラーが表示 されます。
    The following SSH command responded with a non-zero exit status.
    Vagrant assumes that this means the command failed!
    mkdir -p /vagrant</li>
    

私は困惑しています。これはすでに 2 つのボックスで発生しており、Knife と Vagrant がうまく連携できることはわかっています。

私は何を間違っていますか?

Vagrant を掘り下げることにとても興奮しています。

4

1 に答える 1

17
chef.add_recipe "sudo"

最初の実行後に sudo ファイルを削除しました。

vagrant ユーザーの vagrant ファイルに適切な json を追加します。

何かのようなもの:

config.vm.provision :chef_solo do |chef|

  # add your recipes
  # chef.add_recipe "foo"
  # chef.add_role   "bar"
  chef.json = {
    "authorization" => {
        "sudo" => {
            "users" => [ "vagrant" ],
            "passwordless" => true,
        }
    }
  }
end
于 2012-11-23T13:47:15.807 に答える