VBoxManageを使ってVagrant Boxを作成する方法(第3回)~仮想マシンをVagrant Boxに変換する

VVBoxManageを使ってVagrant Boxを作成する方法(第3回)~仮想マシンをVagrant Boxに変換する

はじめに

第2回の記事では、作成した仮想マシンをVagrant化する方法について解説しました。最終回となる今回は、Vagrant化した仮想マシンをVagrant Boxに変換する方法を解説します。

Vagrant Boxの作成

作成した仮想マシンをVagrant Boxとして作成します。
以下の手順で、Vagrant Boxを作成します。

  1. VirtualBoxイメージのエクスポート

    作成した仮想マシンを、OVF(Open Virtualization Format)形式でエクスポートします。
    実行すると、box-disk1.vmdkおよび、box.ovfファイルが作成されます。

    $ mkdir -p ~/mybox/vagrant/CentOS-6.4-x86_64-minimal && cd ~/mybox/vagrant/CentOS-6.4-x86_64-minimal
    $ VBoxManage export CentOS-6.4-x86_64-minimal -o box.ovf
    
    punio@PAPA ~
    $ mkdir -p ~/mybox/vagrant/CentOS-6.4-x86_64-minimal && cd ~/mybox/vagrant/CentOS-6.4-x86_64-minimal
    
    punio@PAPA ~/mybox/vagrant/CentOS-6.4-x86_64-minimal
    $ VBoxManage export CentOS-6.4-x86_64-minimal -o box.ovf
    0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
    Successfully exported 1 machine(s).
    
    punio@PAPA ~/mybox/vagrant/CentOS-6.4-x86_64-minimal
    $ VBoxManage showvminfo CentOS-6.4-x86_64-minimal --machinereadable | grep ^macaddress1
    macaddress1="080027D71F3F"
    
    punio@PAPA ~/mybox/vagrant/CentOS-6.4-x86_64-minimal
    $ vi Vagrantfile
    
  2. Vagrantfileファイルの作成

    Vagrant Boxに変換する際に使用するVagrantfileを作成します。
    Vagrantでは、Box起動時にnatインターフェースを使ってBoxに接続しますので、作成したVMのNICのMACアドレスを調べた後、Vagrantfileに指定します。

    $ VBoxManage showvminfo CentOS-6.4-x86_64-minimal --machinereadable | grep ^macaddress1
    

    下記の内容を指定して、Vagrantfileを作成します。
    指定するconfig.vm.base_macには、先程調べたMACアドレスを指定します。

    Vagrant::Config.run do |config|
      config.vm.base_mac = "080027D71F3F"
    end
    
    1016-02
  3. Vagrant Boxの作成

    Boxを作成する準備が整いましたので、Boxを作成します。
    Boxは、tar形式でアーカイブされていますので、tarコマンドでアーカイブします。
    Boxファイルを作成したら、作成した3つのファイルは削除します。

    $ tar cvf /export/vagrant/CentOS-6.4-x86_64-minimal.box .
    $ rm -f box-disk1.vmdk box.ovf Vagrantfile
    
    punio@PAPA ~/mybox/vagrant/CentOS-6.4-x86_64-minimal
    $ tar cvf /export/vagrant/CentOS-6.4-x86_64-minimal.box .
    ./
    ./box-disk1.vmdk
    ./box.ovf
    ./Vagrantfile
    
    punio@PAPA ~/mybox/vagrant/CentOS-6.4-x86_64-minimal
    $ rm -f box-disk1.vmdk box.ovf Vagrantfile
    
    punio@PAPA ~
    $ mkdir -p ~/mybox/vagrant/ubuntu-12.10-server-i386 && cd ~/mybox/vagrant/ubuntu-12.10-server-i386
    

    veeeweeで作成したVMも同様の手順でBoxに変換できます。その際には、VMをシャットダウンして実行して下さい。

    $ mkdir -p ~/mybox/vagrant/ubuntu-12.10-server-i386 && cd ~/mybox/vagrant/ubuntu-12.10-server-i386
    $ VBoxManage export ubuntu-12.10-server-i386 -o box.ovf
    $ VBoxManage showvminfo ubuntu-12.10-server-i386 --machinereadable | grep ^macaddress1
    $ tar cvf /export/vagrant/ubuntu-12.10-server-i386.box .
    $ rm -f box-disk1.vmdk box.ovf Vagrantfile
    
    punio@PAPA ~/mybox/vagrant/ubuntu-12.10-server-i386
    $ VBoxManage export ubuntu-12.10-server-i386 -o box.ovf
    0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
    Successfully exported 1 machine(s).
    
    punio@PAPA ~/mybox/vagrant/ubuntu-12.10-server-i386
    $ VBoxManage showvminfo ubuntu-12.10-server-i386 --machinereadable | grep ^macaddress1
    macaddress1="080027BEEA79
    
    1016-05
    punio@PAPA ~/mybox/vagrant/ubuntu-12.10-server-i386
    $ tar cvf /export/vagrant/ubuntu-12.10-server-i386.box .
    ./
    ./box-disk1.vmdk
    ./box.ovf
    ./Vagrantfile
    
    punio@PAPA ~/mybox/vagrant/ubuntu-12.10-server-i386
    

Vagrant Boxの起動

作成したCentOS Boxを起動します。

$ cd ~/mybox/vagrant/CentOS-6.4-x86_64-minimal
$ vagrant box add CentOS-6.4-x86_64-minimal /export/vagrant/CentOS-6.4-x86_64-minimal.box
$ vagrant init CentOS-6.4-x86_64-minimal
$ vagrant up
$ vagrant ssh
punio@PAPA ~/mybox/vagrant/CentOS-6.4-x86_64-minimal
$ vagrant box add CentOS-6.4-x86_64-minimal /export/vagrant/CentOS-6.4-x86_64-minimal.box
Downloading or copying the box...
Extracting box...ate: 394M/s, Estimated time remaining: --:--:--)
Successfully added box 'CentOS-6.4-x86_64-minimal' with provider 'virtualbox'!

punio@PAPA ~/mybox/vagrant/CentOS-6.4-x86_64-minimal
$ vagrant init CentOS-6.4-x86_64-minimal
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

punio@PAPA ~/mybox/vagrant/CentOS-6.4-x86_64-minimal
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'CentOS-6.4-x86_64-minimal'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
[default] Mounting shared folders...
[default] -- /vagrant

punio@PAPA ~/mybox/vagrant/CentOS-6.4-x86_64-minimal
$ vagrant ssh
Last login: Wed Nov 27 00:19:36 2013
[vagrant@centos64-x86_64 ~]$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 08:00:27:D7:1F:3F
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fed7:1f3f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:278 errors:0 dropped:0 overruns:0 frame:0
          TX packets:180 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:31127 (30.3 KiB)  TX bytes:24701 (24.1 KiB)

[vagrant@centos64-x86_64 ~]$

作成したubuntu Boxを起動します。

1016-09

$ cd ~/mybox/vagrant/ubuntu-12.10-server-i38
$ vagrant box add ubuntu-12.10-server-i386 /export/vagrant/ubuntu-12.10-server-i386.box
$ vagrant init ubuntu-12.10-server-i386
$ vagrant up
$ vagrant ssh
punio@PAPA ~/mybox/vagrant/ubuntu-12.10-server-i386
$ vagrant box add ubuntu-12.10-server-i386 /export/vagrant/ubuntu-12.10-server-i386.box
Downloading or copying the box...
Extracting box...ate: 36.0M/s, Estimated time remaining: --:--:--)
Successfully added box 'ubuntu-12.10-server-i386' with provider 'virtualbox'!

punio@PAPA ~/mybox/vagrant/ubuntu-12.10-server-i386
$ vagrant init ubuntu-12.10-server-i386
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

punio@PAPA ~/mybox/vagrant/ubuntu-12.10-server-i386
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'ubuntu-12.10-server-i386'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
[default] Mounting shared folders...
[default] -- /vagrant

punio@PAPA ~/mybox/vagrant/ubuntu-12.10-server-i386
$ vagrant ssh
Welcome to Ubuntu 12.10 (GNU/Linux 3.5.0-17-generic i686)

 * Documentation:  https://help.ubuntu.com/
New release '13.04' available.
Run 'do-release-upgrade' to upgrade to it.

Last login: Sun Nov 24 02:29:48 2013 from 10.0.2.2
vagrant@ubuntu-12:~$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 08:00:27:be:ea:79
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:febe:ea79/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:340 errors:0 dropped:0 overruns:0 frame:0
          TX packets:265 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:41389 (41.3 KB)  TX bytes:30524 (30.5 KB)

vagrant@ubuntu-12:~$

まとめ

ここまで、3回に渡ってVBoxManageを使用した仮想マシンの作成方法と、仮想マシンのVagrant Boxへの変換方法について解説しました。今回解説した方法では、GUIを使用しないで仮想マシンを作成し、Vagrant Boxに変換することができますので、大変便利です。なお、今回使用したVirtualBoxはWindows版ですが、コマンドは全てCygwin上で実行しています。DOSコマンドプロンプトでも実行できますが、tarなどUNIX特有のコマンドも使用していますので、Cygwin上で実行することをお勧めします。VBoxManageには、さまざまな機能がありますので、今回解説しなかった機能についても調べてみて下さい。

Comments are closed.