ISOファイルからVagrantのBOXファイルを作成する

vagrant のbox ファイルを作成したメモです。
本文中でもあげていますが以下を読んで作業すればそんなに難しいことはありませんでした。

CentOS 6.6 x86_64 minimalのVagrant boxを作る - 作業ノート

Creating a Base Box - Vagrant by HashiCorp

ISOファイルからVagrantのBOXファイルを作成する

OS Xのターミナルから、Vagrantコマンドでboxを作成するには以下のコマンドを実行すればよい。

$ vagrant package --base centos66

baseオプションは仮想マシン名を指定する。

minimalなCentOSをサーバから落としてきて上記のコマンドを実行しても動かない。
vagrantの実行に必要なvagrant ユーザーが存在しないからだ。
他にも不要な機能を削除したりする必要がある。

実際に何をすれば動かせるようになるかは以下のサイトに書いてある。
http://te2u.hatenablog.jp/entry/2015/05/11/012225
https://docs.vagrantup.com/v2/boxes/base.html

CentOS 6.6 x86_64 minimalのVagrant boxを作る - 作業ノート で記されている以下の手順を行った。

他にやったこと

上記のエントリの「yumリポジトリの登録」以外を行った。

これでboxファイルの基本形はできた。
あとは、アプリケーションを動かすためのソフトウェアをインストールする作業が必要になる。

EPELパッケージを使えるようにする

ansible で設定周りを記述していこうと考えているのでansible がインストールできるようにする。

# yum localinstall http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

参考 http://weblabo.oscasierra.net/install-epel-01/

ansibleをインストールする

# yum install ansible

で、ここからつらつらと playbook につらつらと構成なんかを書いていく予定なのだ。

box に登録する

これでベースとなるOSができた。
これを元にvagrant コマンドを叩いてbox ファイルを作成する。

vagrant package --base centos67  --output CentOS-6.7-x86_64 # CentOS-6.7-x86_64.box が作成される。

vagrant package --base centos67 によって、 package.boxが生成される。これがVagrant Cloudから取得していたあのboxファイルだ。
--output とファイル名を指定すれば出力するboxファイルの名前をつけることができる。

指定なければpackage.boxとなる。

vagrant box add --name CentOS-6.7-x86_64-minimal-ja-20151104 CentOS-6.7-x86_64.box
vagrant box list 

これでlist の中にCentOS-6.7-x86_64-minimal-ja-20151104 が表示される。
あとは、vagrant を立ち上げるだけだ。

vagrant init CentOS-6.7-x86_64-minimal-ja-20151104  
vagrant up 

以上で、CentOSのISOファイルからVagrantのbox ファイルを作成&登録してvagrant up でVMを起動するところまでを行った。

まとめ

会社のセキュリティ的な事情とかなければ、イチからboxファイルを作成するというのは手間なだけでそんなに使う機会はないのかなという気がします。

ただ、開発環境の整った状態のbox ファイルを配布するなどの用途でbox ファイルを作成するというのはとても便利ですね。
box ファイルとVagrantfile さえあれば vagrant up で開発環境が構築できるのですから素晴らしい。

The DevOps 逆転だ!究極の継続的デリバリー

The DevOps 逆転だ!究極の継続的デリバリー