Vagrantで作成した仮想環境を別のPCに移行する方法と、起きたトラブルの解説

2022/7/10

(最終更新: 2022/7/10

アイキャッチ

はじめに

PCを買い換えたので、これまで使っていたLinux仮想環境を新しいPCで利用したい。

実施した内容と、見舞われたトラブルを残しておく。

(参考)旧PCからの移行ではなく一から環境を構築する場合は、

Vagrant・VirtualBox・Ubuntuで仮想開発環境を立ち上げる

Vagrant・VirtualBox・Ubuntuで仮想開発環境を立ち上げる

Linuxの仮想環境を構築する方法を解説。

https://bunsugi.com/vagrant-virtualbox-ubuntu-install
の記事を参照。

移行元で環境をエクスポートする

Vagrantfileのあるフォルダで、packageコマンドを実行し、package.boxファイルを作成する。

> vagrant package

新しいPCにデータを移動させる

USBメモリなどで以下の3つの情報を移動させる。

  • package.box
  • Vagrantfile
  • 仮想環境とローカルで共有していたフォルダ
    • 私の場合は、
      • ./myblog
      • ./workspace

これらの情報の移動先として、移行先PCにフォルダを作成する。

mkdir ~/vagrant/ubuntu64_18

フォルダ名は何でもよい。 ここでは、ubuntu64_18とした。移行元PCのフォルダ名(当時、VirtualBoxのバージョン18.04をインストールした際に設定した)と合わせたため。

移行先PCにVagrantとVirtualBoxをインストールする

やりかたは

を参照。

boxをリストに追加する

boxは仮想環境起動時のテンプレートのようなもの。 移行元のpackage.boxを追加する。

vagrant box add ubuntu/bionic64 package.box

ボックス名(addの第一引数)は任意だが、ubuntu/bionic64としている。

ここでつけたボックス名はVagrantfileの中に

config.vm.box = "ubuntu/bionic64"

のように入ってくることになる。

myboxなどと適当な名前にして、

config.vm.box = "mybox"

のようになるよりは、移行元のVagrantfileの記載と同じになるようにネーミングしたほうが良いと考えた。

boxのリストを確認する。

> vagrant box list
ubuntu/bionic64 (virtualbox, 0)

Vagrantfileを作成する

box名を指定して、vagrant initを実行する。

> vagrant init ubuntu/bionic64

【注意】コピーしてきたVagrantfileが存在すると

`Vagrantfile` already exists in this directory. Remove it before
running `vagrant init`.

といったエラーが発生するため、いったんどこかに退避しておく。

作成したVagrantfileは、移行元のVagrantfileに中身を書き換えておく。

参考:私の環境のVagrantfile

Vagrant.configure("2") do |config|
    config.vm.box = "ubuntu/bionic64"
    config.vm.network "forwarded_port", guest: 8000, host: 8000
    config.vm.network "forwarded_port", guest: 3000, host: 3000
    config.vm.network "forwarded_port", guest: 9000, host: 9000
    config.vm.synced_folder "./workspace", "/home/vagrant/workspace"
    config.vm.synced_folder "./myblog", "/home/vagrant/gatsby/gatsby-starter-blog/myblog"

    config.vm.provider :virtualbox do |vb|
      vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/home/vagrant/workspace","1"]
    end
  
    config.vm.provider "virtualbox" do |vb|
      vb.memory = "4096"
      vb.customize ['modifyvm', :id, '--cableconnected1', 'on']
    end

  end

仮想環境を起動する

Vagrantfileができたので、

> vagrant up

を実行し、仮想環境を立ち上げる。

パスが見つからないエラーが発生した場合

以下のエラーが発生し、起動できない場合がある。

There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["startvm", "7ce1dfcb-c97d-4db0-8ecd-195acbc12bb5", "--type", "headless"]

Stderr: VBoxManage.exe: error: RawFile#0 failed to create the raw output file C:/Users/{移行前のPCのユーザ名}/vagrant/ubuntu64_18/ubuntu-bionic-18.04-cloudimg-console.log (VERR_PATH_NOT_FOUND)VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component ConsoleWrap, interface IConsole

エラー解消方法:シリアルポートの設定を変更する

Oracle VM VirtualBox マネージャーの「設定」⇒シリアルポート⇒パス/アドレスに、フォルダの絶対パスが記載されていました。

このパスに「移行元のユーザ名」が含まれており、エラーとなっていたようでした。

移行先のユーザ名を含めたパスに変更します。

OracleVMマネージャー

参考資料

こちらの記事がなければあと3日はハマっていたかも。。感謝です。

Vagrantファイルを含むディレクトリを移動した時にエラーが出てvagrant upできない時の対処 | よろづシステムズ

再度起動し、状態を確認する。

修正が終わったら

> vagrant up

を実行する。

ステータスを確認すると、実行(running)になっていた。

> vagrant status
default running (virtualbox)

参考:タイムアウトが出る場合

こちらの記事も参考にしてください。

SSH接続してみる

SSH接続してみる。

> vagrant ssh

移行元のPCで作成したフォルダやファイルを参照することができた。

vagrant@ubuntu-bionic:~$ ls
aws gatsby tmp workspace

まとめ

旧PCから新PCに仮想環境ごと移行することができた。

追記

2022/10月

WindowsPCでLinux環境を使いたいときは、WSL2を使うことにしました

VirtualBox・Vagrantの環境は、構築作業に時間がかかっていたのと動作が重かったので、乗り換えました。今のところ快適です。



個別連絡はこちらへ→Twitterお問い合わせ

プロフィール

プロフィールイメージ

はち子

事業会社のシステム部門で働きはじめて5年目の会社員。システム企画/要件定義/システムアーキテクチャ等。

Twitter→@bun_sugi

過去の記事について

はてなブログに掲載の記事(主にプログラミングメモ)についてはこちらに掲載しております。(本ブログに移行中)

タグ一覧

関連記事

Copyright© 2023, エンジニアを目指す日常ブログ

お問い合わせ|プライバシーポリシー