vagrantでVirtualBoxの管理をする方法。vagrantの再インストール後にvagrant upで別マシンが作られてしまう場合の対応

シェアする

vagrantでブルースクリーン(BSoD)になってしまう問題の調査中にvagrantをアンインストールたり再インストールしたりを繰り返したりしたら、vagrant upしたときに、今まで使っていたのと違う仮想マシンが同じboxベースで作られてしまいました。

今まで使っていた仮想マシンが使えないとやばい・・・

ということでいろんなサイトを調べながら、なんとか、前のVirtualBoxの仮想マシンをvagrantから使えるようになりましたので、手順をメモしておきます。

今まで使っていた仮想マシンからベースとなるboxファイルを作成し、そのベースを使って、vagrant init で別フォルダに環境を再現するという流れになります。

手順ですが、

  • Vagrantパッケージ(boxファイル)の作成
  • Vagrant boxの追加
  • Vagrantfileの作成・起動

となります。

VirtualBox 仮想マシンをVagrantで管理する方法

Vagrantパッケージの作成

まず、管理したいVirtualBox仮想マシンのVagrantパッケージを作成します。

私の場合、Oracle VM VirtualBox マネージャーには仮想マシン設定が残っていました。起動する必要はありませんが、「設定」ウインドウを開いて、「一般メニュー→高度タブ」のスナップショットの保存先のパスを見ると、VirtualBox の仮想マシンのあるフォルダが分かります。

また、その場所ですが、私のWindows7 64bitの環境では「c:/Users/ユーザー名/VirtualBox VMs/仮想マシンの名称」になっていました。

Vagrantパッケージ作成に必要な xxxx.vboxファイルは、上記仮想マシンのフォルダにあります。

vagrant package コマンドでVagrantパッケージを作成します。

vagrant package --base centosx11_default_1498679633445_56532.vbox

コマンドを実行するとカレントフォルダに、package.box が作成されます。

Vagrant boxの追加

次に作成したパッケージファイル package.box からVagrant box を作成して追加します。vagrant box add コマンドを使います。

centosx11の部分はboxの名称になります。好きな名前でどうぞ。

作成後は、ネットからダウンロードしたboxとともに一覧でみることができます。

Vagrantfileの作成・起動

以下は、普段と同じような手順となりますが、新しい仮想マシン用のvagrantフォルダを作って、Vagrantfileを作成します。

Vagrantfileを編集し、ネットワーク設定の行を有効にします。

ipアドレスはお好きに設定。

後は、

です。 このとき以下のようにワーニングが続きます。

Authentication failure が続きます。以前動いていたときと実行環境が違うため、当然、ログインできないのです。セキュリティがしっかりしているということですね。

この修正方法ですが、まず、vagrantのsshの状況を確認します。

IdentityFile の項目にあるキーから public key を作成します。ツールssh-keygenですが、windowsには標準で存在しないようです。私は バージョン管理ツールgit をインストールしました。

さて、この状態でも、vagrant ssh とすれば、仮想マシンにログインすることができます。ログインして、ゲストOS上でsshキーを編集します。キーには、上記ssh-keygenコマンドで作成した public_keyの内容を使います。

ここで、vim で authorized_keysを作成しております。vimを知らない方に操作を説明します。vimは、起動時にノーマルモードになっており、このままだと、文字入力ができません。

i を打ち込むと挿入モードになるので、public_keyの内容をクリップボードにコピーしてauthorized_keysに貼り付けます。まだ共有ディレクトリが設定できていないため、まどろっこしいですがこのような方法でやってます。

貼り付けたら、ESCキーを押してノーマルモードに戻り、:wq と入力することで、保存してvimを終了します。

また、chmod でアクセス権を変更していますが、デフォルトのアクセス権のままだとファイルが有効とみなされないのでご注意ください。

さて、vagrant を再起動してみます。vagrant halt としてから vagrant up でも良いのですが vagrant reload で再起動します。

やっと、復旧できました。よかったーーーー。

お疲れ様でした。

この記事が気に入ったら
いいね ! しよう