2

次のシナリオを想像してください。

  • 新しくインストールされ、改ざんされていない VirtualBox のインストール
  • gem を介して新しくインストールされた Vagrant 1.0.6

そして今、私はこれを試します:

  • vagrant box add box_one [url to box one]
  • vagrant init box_one
  • vagrant up

ここまでは順調ですね。box_oneうまく動作します。それはVirtualBox Managerに表示され、すべてのポート転送が正しく設定され、sshでき、Webサーバーが実行されます-すべてがピーチです.

  • vagrant halt
  • rm Vagrantfile

私が理解している限り、これにより次のことが可能になります。

  • vagrant box add box_two [url to box two]
  • vagrant init box_two
  • vagrant up

と使用しますbox_twobox_twoただし、代わりに、異なるポートが転送されるという構成を明確に使用しますが、の仮想マシンを起動しますbox_one。また、VirtualBox Manager では、異なる ID を持つ 2 つのマシンが表示されますが、どちらも の仮想マシンですbox_one

同僚にはうまくいくように見えるので、私のマシンの何かがそのバグを引き起こしているに違いありません。(または、私は何か奇妙なことをします。誰が知っていますか。)

誰かがそれが何であるかについて考えを持っていますか?

4

2 に答える 2

9

さて、私のエラーは、同じディレクトリでそれを行おうとしたことです。このようにして同じ.vagrantファイルを使用し続けたので、修正はファイルを削除し続けるか.vagrant、別のディレクトリで vagrant アクションを実行することです。

于 2013-03-12T12:24:18.933 に答える
3

Vagrant を 2 つの無関係なディレクトリ (それぞれが独自の local、distinctVagrantfileおよび.vagrantdirectory を持つ) から実行すると、同様の問題が発生します。Vagrant が間違った VM に接続する場合があります。これは一貫性がありませんが、OSX で Vagrant 1.5.x を実行している場合に頻繁に発生します。

この種の動作が見られる場合、それを解決するために私が見つけた唯一の方法は、既存の Vagrantfile にもう少し情報を追加することです。私の場合、Vagrantfile が次のようになったときに問題が発生しました。

VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "some-box-name"
  config.vm.network "forwarded_port", guest: 8000, host: 8001
  config.vm.provider "virtualbox" do |vb|
    vb.gui = false
  end
end

そして、設定する行を追加することで解決されましたvb.name

VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "some-box-name"
  config.vm.network "forwarded_port", guest: 8000, host: 8001
  config.vm.provider "virtualbox" do |vb|
    vb.gui = false
    vb.name = "x1_165165261578"  ## added this line
  end
end

どうやら Vagrant は Virtualbox ボックス名を使用してボックスを識別しますが、指定されていない場合は別の識別子 (おそらく"default"Vagrant ボックス名?) を使用します。.vagrant/....../idVM の一意の ID が格納され、絶対識別子であるため、これは奇妙です。これはバグに違いありません。

これが発生する可能性があることを知っているので、Vagrant 接続を作成した直後に、使用している VM を確認することをお勧めします。たとえば、一意のマシン名をプロンプトに入力するか、他の方法で確認します。似たようなマシンがたくさんある場合、テスト環境用に意図した変更を本番環境に適用するなど、本当に悪いことをするまで、間違ったマシンを使用していることに気付かない場合があります。

于 2014-05-27T18:49:15.087 に答える