137

どういうわけか、私のVagrantプロジェクトはVirtualBox VMから関連付けを解除されたため、vagrant upVagrantがベースボックスをインポートして新しい仮想マシンを作成します。

Vagrantプロジェクトを既存のVMに再度関連付ける方法はありますか?VagrantはどのようにしてVagrantfileをVirtualBoxVMディレクトリに内部的に関連付けますか?

4

11 に答える 11

214

Vagrant 1.6.3の場合、次の手順を実行します。

1) Vagrantfile があるディレクトリで、次のコマンドを実行します。

VBoxManage list vms

次のようなものがあります。

"virtualMachine" {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

2) 次のパスに移動します。

cd .vagrant/machines/default/virtualbox

3) VM xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx の ID でidという名前のファイルを作成します。

4) ファイルを保存し、vagrant upを実行します。

于 2014-08-26T23:35:14.043 に答える
91

警告:以下のソリューションは Vagrant 1.0.x では機能しますが、 Vagrant 1.1+では機能しません。

Vagrant は、「Vagrantfile」と同じディレクトリにある「.vagrant」ファイルを使用して、VM の UUID を追跡します。VM が存在しない場合、このファイルは存在しません。ファイルの形式は JSON です。単一の VM が存在する場合、次のようになります。

{
   "active":{
      "default":"02f8b71c-75c6-4f33-a161-0f46a0665ab6"
   }
}

defaultは、デフォルトの仮想マシンの名前です (マルチ VM セットアップを使用していない場合)。

VM が何らかの形で関連付けを解除された場合、できることはVBoxManage list vms、VirtualBox がその名前と UUID で認識しているすべての VM を一覧表示することです。.vagrant次に、同じディレクトリに手動でファイルを作成Vagrantfileし、内容を適切に入力します。

実行vagrant statusして、Vagrant が適切な変更を取得したことを確認します。

注:これは Vagrant によって公式にサポートされているわけではなく、Vagrant は.vagrantいつでも の形式を変更する可能性があります。しかし、これは Vagrant 0.9.7 の時点で有効であり、Vagrant 1.0 でも有効になります。

于 2012-02-24T20:47:42.197 に答える
15

今日問題が発生した場合、.vagrantフォルダーが見つからず、単に ID を設定する以外にいくつかの手順が必要であることがわかりました。

  1. ID を設定します。

    VBoxManage list vms
    

    id を見つけて に設定し{project-folder}/.vagrant/machines/default/virtualbox/idます。

    egdefaultで設定すると異なる場合があることに注意してください。Vagrantfileconfig.vm.define "someothername"

  2. マシンのプロビジョニングを停止します。

    action_provisionファイルと同じディレクトリに名前の付いたファイルを作成し、そのid内容を次のように設定します。ステップ 1 で見つかった ID1.5:{id}に置き換えます。{id}

  3. 新しい公開鍵/秘密鍵をセットアップします。

    Vagrant は、に保存されている秘密鍵を使用し.vagrant/machines/default/virtualbox/private_keyて、マシンに ssh します。新しいものを生成する必要があります。

    ssh-keygen -t rsa
    

    名前を付けてprivate_keyください。

    vagrant sshにコピーprivate_key.pub/home/vagrant/.ssh/authorized_keysます。

于 2016-09-28T09:10:37.743 に答える
9

今日、Vagrant 1.7.4 で同じ問題を更新します。

たとえば、ボックス 'vip-quickstart_default_1431365185830_12124' を vagrant にペアリングします。

$ VBoxManage list
"vip-quickstart_default_1431365185830_12124" {50feafd3-74cd-40b5-a170-3c976348de27}
$ echo -n "50feafd3-74cd-40b5-a170-3c976348de27" > .vagrant/machines/default/virtualbox/id
于 2015-11-09T11:04:12.513 に答える
6

マルチ VM セットアップの場合、次のようになります。

{
   "active":{
        "web":"a1fc9ae4-5d43-49cb-be31-ab3c4f74745d",
        "db":"13503bc5-76b8-4c26-95c4-32435b372212"
   }
}

これらの VM の作成に使用される Vagrantfile から VM 名を取得できます。次の行を探します。

config.vm.define :web do |web_config|

この場合、「web」は vm の名前です。

于 2012-10-31T23:45:01.953 に答える
5

OSX El CapitanでVagrant 1.8.1を使用しています

コンピューターの再起動時に vm が正しくシャットダウンされなかったため、試しvagrant upてみると常に新しい vm が作成されていました。ここで解決策はありませんでした。しかし、うまくいったのはingmmurilloの答えのバリエーションでした

したがって.vagrant/machines/default/virtualbox/id、実行中の id に基づいて作成する代わりにVBoxManage list vms. IDを更新する必要がありました.vagrant/machines/local/virtual_box/id

私は本質的に私のためにこれを行う1つのライナーを持っています:

echo -n `VBoxManage list vms | head -n 1 | awk '{print substr($2, 2, length($2)-2)}'` > .vagrant/machines/local/virtualbox/id

これは、最初のボックスが実行から開始する必要があるものであると想定していますVBoxManage list vms

于 2016-04-11T04:44:56.547 に答える
0

私はmacosを使用していますが、ボックスの.locksを削除すると問題が解決することがわかりました。

何らかの理由で

vagrant halt

これらのロックを削除せず、timemachine を使用して .vagrant/machine/default/virtualbox のすべての設定を復元し、ロックを削除すると、適切なマシンが起動しました。

マイナーな問題が 1 つだけ残っています。grub で起動したので、Enter キーを 1 回押す必要がありました。これが残っているかどうかはわかりませんが、すぐにわかります。

vagrant 1.7.4 と virtualbox 5.0.2 を実行しています

于 2016-03-04T09:35:15.137 に答える
0

私にとっては

cd yourVagrantProject/.vagrant/machines/default/virtualbox/
rm id

働きました。

于 2021-01-13T14:30:03.123 に答える