2016-05-11 1 views
14

ubuntu/xenial64ボックスを使用して2つの別々のプロジェクト用に2つの別々のVMを作成します。 Vagrantfileを別々の2つのプロジェクトディレクトリに定義し、それぞれにconfig.vm.box = "ubuntu/xenial64"という行を追加しました。迷惑メールエラー - 名前を持つVirtualBoxマシンがすでに存在しています

最初のボックスが正常に起動します。しかし、私は2番目のプロジェクトのためにvagrant upを行うとき、私はそれを明確に書かれているエラーにベイグラントのマニュアルで

A VirtualBox machine with the name 'ubuntu-xenial-16.04-cloudimg' already exists. 

を取得

ボックスは、世界的に、現在のユーザーのために保存されていること。各プロジェクトでは、 ボックスを初期イメージとして使用して複製し、実際の ベースイメージは複製しません。つまり、追加したばかりの hashicorp/precise64ボックスを使用するプロジェクトが2つある場合、あるゲストにファイルを追加すると、 マシンは他のマシンに影響しません。

なぜこのエラーが発生しますか?

私はすでにother similar questionsをチェックアウトしていますが、同じ名前を持つように見える既存のVMを削除するという解決策は理解できません。上記のバグの文書の引用によれば、それは必要ではないはずです。何か不足していますか?

+0

私は、このボックス 'Ubuntuの/ xenial64'が作成された方法に関係しているという感じを取得しています。別のボックス 'gbarbieru/xenial'を使って同じ実験を繰り返し、複数のVMを作成している間はこのような問題はありません。私がVirtualBox GUIを見ると、起動時にVM名がフォルダ名を含む名前に自動的に変更されることがわかります。 – Jayesh

+0

ボックスを直接編集せずに名前を指定する方法はありますか?私はデフォルトのアップストリーム設定を使い、そのすべてを抽象的な抽象的なものにすることを好みます...それと、チェックアウトしなくてはならない代わりに 'git checkout'の直後にボックスを立ち上げてから、' VagrantFile ' – Tor

答えて

19

他のVMを削除する必要はありません。確かに、同じボックスから多数のVMを確実に取得できます。

VirtualBoxで作成したVMのVirtualBox Nameにエラーがある可能性があります。この名前と2つのプロジェクトで同じ名前を設定するプロパティを上書きすると、衝突が発生します。answer VM

の名前を定義するので、どちらかのVMの名前を定義するか、あなたの別のプロジェクトにユニークなVM名を持っており、それがうまく

UPDATEを実行することを確認してください放浪を残すためにさまざまな方法を表示するには 私はこの特定のボックスをチェックして、それには次のVagrantファイルが含まれています

Vagrant.configure("2") do |config| 
    config.vm.base_mac = "02101FC67BA9" 
    config.ssh.username = "ubuntu" 
    config.ssh.password = "c1580f876b655137c6c35b69" 
    config.vm.synced_folder '.', '/vagrant', disabled: true 

    config.vm.provider "virtualbox" do |vb| 
    vb.name = "ubuntu-xenial-16.04-cloudimg" 
    vb.customize [ "modifyvm", :id, "--uart1", "0x3F8", "4" ] 
    vb.customize [ "modifyvm", :id, "--uartmode1", "file", File.join(Dir.pwd, "%s-console.log" % vb.name) ] 
    end 
end 

ので

config.vm.provider "virtualbox" do |vb| 
    vb.name = "your specific project name" 

このプロパティをオーバーライドして、各プロジェクトのために一意であるvb.nameを変更するには、あなたのVagrantfileで確認してください。

+0

noob質問:どのように' ubuntu/xenial64'のVagrantfileを見ることができましたか? – Jayesh

+4

〜/ .vagrant.d/boxes/ubuntu-VAGRANTSLASH-xenial64/20160509.0.0/virtualbox/Vagrantfile' –

+1

ありがとうございます - ハードコードされたvb.nameをボックスのVagrantfileから削除して、インスタンスは現在正常です。 – robo

2

毎回ユニークなVM名について考えるのではなく、元のボックスのVagrantfile~/.vagrant.d/boxes/ubuntu-VAGRANTSLASH-xenial64/<VERSTION>/virtualbox/Vagrant‌​fileにある)を編集する方が簡単だとわかりました。

Vagrantfileの作業コンフィグ(箱に!):

include_vagrantfile = File.expand_path("../include/_Vagrantfile", __FILE__) 
load include_vagrantfile if File.exist?(include_vagrantfile) 

Vagrant.configure("2") do |config| 
    config.vm.base_mac = "0223C61ABA59" 
    config.ssh.username = "ubuntu" 
    config.ssh.password = "86f7d0e04910475d8789aa8f" 
    config.vm.synced_folder '.', '/vagrant', disabled: true 

    config.vm.provider "virtualbox" do |vb| 
    vb.customize [ "modifyvm", :id, "--uart1", "0x3F8", "4" ] 
    end 
end 
関連する問題