Vagrant プロジェクト ディレクトリを既存の VirtualBox VM に関連付けるにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/9434313

  •  12-11-2019
  •  | 
  •  

質問

どういうわけか、私の Vagrant プロジェクトが VirtualBox VM から切り離されてしまい、 vagrant up Vagrant はベースボックスをインポートし、新しい仮想マシンを作成します。

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

役に立ちましたか?

解決

警告: 以下のソリューションは Vagrant 1.0.x で機能しますが、 ない ベイグラント 1.1+。

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

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

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

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

走る vagrant status Vagrant が適切な変更を確実に取得できるようにするためです。

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

他のヒント

Vagrant 1.6.3 以下を行う:

1)あなたのVagrantFileがあるディレクトリに、コマンドを実行してください。

VBoxManage list vms
.

あなたはこのようなものをするでしょう:

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

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

cd .vagrant/machines/default/virtualbox
.

3) id というファイルを作成して、VM xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxxxx のIDに登録します。

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

上部バージョンの解決策はかなり同じです。

しかし最初に.vboxファイルを手動で起動する必要があります。これにより、VBoxManage list vms

その後、.vagrant/machines/default/virtualbox/idを確認して、UUIDが正しいものであることを確認できます。

今日問題がありました、私の .vagrant フォルダーが見つからず、単に ID を設定するだけではなく、さらにいくつかの手順があることがわかりました。

  1. ID を設定します。

    VBoxManage list vms
    

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

    ご了承ください default に設定されている場合は異なる場合があります Vagrantfile 例えば config.vm.define "someothername".

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

    という名前のファイルを作成します action_provision と同じディレクトリにある id ファイルの内容を次のように設定します。 1.5:{id} 交換する {id} ステップ 1 で見つけた 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.

今日のvagrant 1.7.4:

  • https://github.com/mitchellh/vagrant/issues/1755 そして、以下のコマンドで特別に: たとえば、ペアボックス 'vip-quickstart_default_14313651830_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
    
    .

マルチ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の名前です。

使っています ベイグラント 1.8.1 の上 OSX エル キャピタン

コンピューターの再起動時に VM が正しくシャットダウンされなかったので、試してみたところ vagrant up 常に新しい VM を作成していました。ここでの解決策は私にとっては役に立ちませんでした。しかし、機能したのは次のバリエーションでした インムリロさんの答え

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

基本的にこれを行うワンライナーがあります。

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

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

vagrant 1.9.1:

私は「Ubuntu 16.04.1」という名前の仮想ボックスにVMを持っていたので、のヴァグラントボックスとしてパッケージ化しました。

vagrant package --base "Ubuntu 16.04.1"
.

は... で応答します

==> Ubuntu 16.04.1: Exporting VM...
==> Ubuntu 16.04.1: Compressing package to: blah blah/package.box
.

これは @ Petecoopの答えから変更されます。

vagrant haltまだボックスをシャットダウンしていない場合は

その後、VirtualBoxesを一覧表示します.VBoxManage list vms

あなたのすべての仮想ボックスをリストします。回復したいボックスを識別して、巻き括弧:{}

プロジェクトIDファイルを編集します.sudo nano .vagrant/machines/default/virtualbox/id(プロジェクトディレクトリから)

VBSのリストからコピーしたIDに置き換えます。

vagrant reloadを試してください。

それがうまくいかない場合は(私がつまずいた場所)に吊り下げられた場合は、安全でない公開鍵を vagrant git /.vagrant/machines/default/virtualbox/private_keyの内容を置き換えます。オリジナルのオリジナルのバックアップ:cp private_key private_key-bak

からvagrant reloadを実行します。それが不安定なキーを特定し、新しいものを作成したと言うでしょう。

default: Vagrant insecure key detected. Vagrant will automatically replace
default: this with a newly generated keypair for better security.
default: Inserting generated public key within guest...
default: Removing insecure key from the guest if it's present...
default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
.

あなたはすべてセットされるべきです。

私はMacOS上にいて、ボックス上の。ロックを削除することが私の問題を解決しました。

何らかの理由で

vagrant halt
.

これらのロックを削除しませんでした。

1つの小さな問題のみが残っています、それはGrubに起動したので、私は一度入力を押さなければならなかったので、これが滞在しているかどうかわからないが、私はすぐに十分に見つけられます。

Vagrant 1.7.4とVirtualBox 5.0.2 を実行しています

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top