Vagrant プロジェクト ディレクトリを既存の VirtualBox VM に関連付けるにはどうすればよいですか?
-
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 でも有効になります。
他のヒント
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 を設定するだけではなく、さらにいくつかの手順があることがわかりました。
ID を設定します。
VBoxManage list vms
IDを見つけて設定します
{project-folder}/.vagrant/machines/default/virtualbox/id
.ご了承ください
default
に設定されている場合は異なる場合がありますVagrantfile
例えばconfig.vm.define "someothername"
.マシンのプロビジョニングを停止します。
という名前のファイルを作成します
action_provision
と同じディレクトリにあるid
ファイルの内容を次のように設定します。1.5:{id}
交換する{id}
ステップ 1 で見つけた ID を使用します。新しい公開鍵/秘密鍵をセットアップします。
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
. vagrant halt
まだボックスをシャットダウンしていない場合は
その後、VirtualBoxesを一覧表示します.VBoxManage list vms
あなたのすべての仮想ボックスをリストします。回復したいボックスを識別して、巻き括弧:{}
。
プロジェクトIDファイルを編集します.sudo nano .vagrant/machines/default/virtualbox/id
(プロジェクトディレクトリから)
それがうまくいかない場合は(私がつまずいた場所)に吊り下げられた場合は、安全でない公開鍵を 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 を実行しています