Vgrantのboxをパッケージ化する方法

Vagrant

チームで開発するときにVagrantで作成した環境を共有するには、boxの「パッケージ化」を行います。

また、プレーンな状態のboxに設定を加えた仮想マシンを再活用したい場合もあります。
その時にも、設定状態をパッケージ化しておけば使いまわすことができ1から設定する必要がありません。

Vagrantのboxを作成する方法を解説します。

Vgrantのboxを作成

今回は、「仮想マシンにWebサーバーApacheをインストールしブラウザからWEBページを表示確認する方法」で作成した仮想マシンをベースにパッケージ化する方法を例に説明します。

構成

  • OS:CentOS Linux release 7.1.1503 (Core)
  • Webサーバー:Server version: Apache/2.4.6 (CentOS)
  • Apacheの設定:Apacheの自動起動設定、ファイヤーウオールを切る

仮想マシンのディレクトリに移動

↓まず、ローカルパソコン側で、仮想マシンのVagrantfile のあるディレクトリに移動します。

cd vagrant/centos7.0/

パッケージ化

↓パッケージ化するには以下のコマンドを実行します。

vagrant package

↓パッケージ化には時間がかかるので、処理を待ちます。

vagrant package
 ==> default: VM not created. Moving on...

↓lsコマンドでフォルダの中を確認してみましょう。

$ls
Vagrantfile package.box

「package.box」 というファイルが作成できました。

ボックスを登録

↓以下のコマンドで名前を指定してボックスを登録します。
今回は「my_box」という名前で登録してみます

vagrant box add [box名] package.box
vagrant box add my_box package.box

↓コマンドを実行すると、ボックスに登録が開始されるので待ちます。


==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'my_box' (v0) for provider:
box: Unpacking necessary files from: file:///Users/takanori/vagrant/my_box/package.box

ボックスのリストを確認

↓以下のコマンドでボックスのリストに登録できたか確認します。

vagrant box list
 my_box (virtualbox, 0)

「my_box」が追加ができたことが確認できました!
これで、独自に設定したboxとして使うことができます。

追加したboxの使い方

追加したboxは仮想マシンを立ち上げるときに使うことができます。
「my_box」から仮想マシンを立ち上げ、設定出来ている状態か確認してみます。

↓ディレクトリの準備

mkdir -p vagrant/sample_vm
cd vagrant/sample_vm/

↓ボックスの追加

vagrant init my_box
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.

↓Vagrantfileの確認

ls
Vagrantfile

↓vagrant起動

vagrant up

↓仮想マシンに接続

vagrant ssh

↓仮想マシンに接続できたら、WEBサーバーの状態を確認してみましょう。

httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built: Apr 12 2017 21:03:28

↓Apacheの自動起動設定状態も確認してみます。

chkconfig

このように追加したWebサーバーや設定内容が保持されてboxが作成できていることが確認できます。

box の削除

↓box を削除する方法も説明しておきます。以下のコマンドを実行します。

vagrant box remove [box名]

↓例えば、今回の「my_box」を削除する場合、以下のコマンドになります。

vagrant box remove my_box

↓なお、削除コマンドを実行しても、Boxの実態「~/.vagrant.d/boxes/」ディレクトリには残っています。

ls ~/.vagrant.d/boxes/
my_box

↓これを完全に削除したい場合は、以下のコマンドを実行します。

rm -rf ~/.vagrant.d/boxes/][box名]

最後に

Vagrantのboxを作成する方法を解説しました。