VirtualBox + Vagrant で自分用のboxファイルを作成する - uehatsu's tech blog

ここのところ、Vagrantを使っていろいろとやるのにはまってます。

インストール方法とかは色々なところに書かれているので、それ以降の事を書いてみたいと思います。

1. 基本となるboxファイルをaddする。

今回はCentOS 6.6のboxファイルを作りたいので、VirtualBoxとpackerを使ってごにょごにょする方法もあるのですが、既存のboxファイルを流用する方法をご紹介します。そっちの方が楽だからw
https://atlas.hashicorp.com/ からaddしますが、従来のようにboxファイルをダウンロードする方法や、boxファイルやjsonファイルのURLを指定する方法ではなく、box名を指定します。ATLASの中からboxファイルを検索します。

https://atlas.hashicorp.com/boxes/search

ここで、「centos」「virtualbox」「Downloads」で検索すると、"chef/centos-6.5"がヒットしますので、これをaddします。

[host]$ vagrant init chef/centos-6.5
[host]$ vagrant up

ネット環境にもよりますが数分から数時間待つと自動的にboxをaddした上でcentos-6.5環境ができます。なんと簡単な!!従来より格段に便利になっていますね。

2. CentOS 6.5からCentOS 6.6へアップデート

ログインさえしていまえば普通のCentOSです。アップデートを行います。ここでは後ほどVirtualBoxのGuest Additionsをリビルドする必要があるので、"Development tools"をインストールしています。

[host]$ vagrant ssh
$ sudo yum groupinstall "Development tools" -y
$ sudo yum install kernel-devel yum-utils vim-enhanced -y
$ sudo yum update -y
$ exit
[host]$ vagrant reload

3. Guest Additionsのリビルド

vagrant reloadすると共有ディレクトリがマウントされません。色々赤字でメッセージが出て精神衛生上良くありません。Guest Additionsをリビルドしてやります。

[host]$ vagrant ssh
$ sudo service vboxadd setup
$ exit
[host]$ vagrant reload

4. 自分色に染めましょう

自分はApache、MySQL、Rubyなどをインストールしました。ここでは割愛。

5. アップデート後のクリーンナップ

色々とケアしてあげます。

[host]$ vagrant ssh
$ export HISTIGNORE=*
$ curl https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub >> ~/.ssh/authorized_keys
$ sudo vi /boot/grub/grub.conf
=====
timeout=0
=====
$ sudo vi /etc/sysctl.conf
=====
vm.swappiness = 0
=====
$ sudo vi /etc/sysconfig/selinux
=====
SELINUX=desabled
=====
$ sudo yum clean all
$ sudo package-cleanup --oldkernels --count=1
$ sudo package-cleanup --leaves
読み込んだプラグイン:fastestmirror
libtool-2.2.6-15.5.el6.x86_64 <= これがいらないパッケージ
$ sudo yum remove libtool-2.2.6-15.5.el6.x86_64
$ dd if=/dev/zero of=zerofile
(時間がかかります)
$ rm zerofile
$ cat /dev/null > ~/.bash_history
$ exit
[host]$ vagrant halt

6. boxファイルの作成

vagrant packageコマンドでboxファイルを作成します。vagrant packageのオプションがなぜか通らないので後でリネームしています。

[host]$ vagrant package
[host]$ mv package.box centos-6.6.box

7. boxファイルのテスト

[host]$ vagrant box add test ./centos-6.6.box
[host]$ mkdir test
[host]$ cd test
[host]$ vagrant init test
[host]$ vagrant up
[host]$ vagrant ssh
(テスト)
$ exit
[host]$ vagrant halt
[host]$ vagrant destroy
[host]$ cd ..
[host]$ rm -rf test
[host]$ vagrant box remove test

8. boxファイルのアップロード

インターネット上にboxファイルをアップロードします。ここではアップロード場所を以下とします。

https://uehatsu.info/vagrant/uehatsu/centos-6.6.box

9. jsonファイルの作成

以下のURLにjsonファイルを作成します。

https://uehatsu.info/vagrant/uehatsu/centos-6.6.json

{
    "description": "CentOS6.6 x86_64",
    "short_description": "CentOS6.6",
    "name": "uehatsu/centos-6.6",
    "versions": [{
        "version": "1.0.0",
        "status": "active",
        "description_html": "<p>CentOS6.6 x86_64</p>",
        "description_markdown": "CentOS6.6 x86_64",
        "providers": [{
            "name": "virtualbox",
            "url": "https://uehatsu.info/vagrant/uehatsu/centos-6.6.box"
        }]
    }]
}

10. boxファイルのadd

インターネット上のboxファイルをaddします。ローカルでやれば良い気もしますが、これをやっておくとboxファイルのバージョン管理ができるようになります。

[host]$ vagrant box add https://uehatsu.info/vagrant/uehatsu/centos-6.6.json
[host]$ vagrant box list
uehatsu/centos-6.6 (virtualbox, 1.0.0)

11. テスト

addしたboxファイルを使ってvmを立ち上げてみます。

[host]$ mkdir test
[host]$ cd test
[host]$ vagrant init uehatsu/centos-6.6
[host]$ vagrant up
[host]$ vagrant ssh
(テスト)
$ exit
[host]$ vagrant halt
[host]$ vagrant destroy
[host]$ cd ..
[host]$ rm -rf test

12. boxファイルのアップデート

boxファイルをアップデートしたら、同じ場所にアップロードして、jsonファイルの"version"を1.0.1などに修正しておきます
boxファイルのアップデートは以下のコマンドで行います。

[host]$ vagrant box update --box uehatsu/centos-6.6

vagrant box listで確認するとバージョンが上がっているのが分かります。

[host]$ vagrant box list
uehatsu/centos-6.6 (virtualbox, 1.0.0)
uehatsu/centos-6.6 (virtualbox, 1.0.1)

13. アップデート前のboxファイルの削除

このままだとアップデート前のboxファイルが残ったままになるので削除します。

[host]$ vagrant box remove uehatsu/centos-6.6 --box-version 1.0.0

こんな感じでboxファイルの作成、アップデートを行っていきます。

将来的にはATLASでboxファイルを公開したいですね。

実践 Vagrant
実践 Vagrant Mitchell Hashimoto Sky株式会社 玉川 竜司

オライリージャパン 2014-02-21
売り上げランキング : 128897


Amazonで詳しく見る
by G-Tools
Vagrant入門ガイド
Vagrant入門ガイド 新原雅司

技術評論社 2013-09-12
売り上げランキング : 3788


Amazonで詳しく見る
by G-Tools
10日でおぼえるLinuxサーバー入門教室 CentOS対応 (10日でおぼえるシリーズ)
10日でおぼえるLinuxサーバー入門教室 CentOS対応 (10日でおぼえるシリーズ) 一戸 英男

翔泳社 2012-11-16
売り上げランキング : 103624


Amazonで詳しく見る
by G-Tools
 
カテゴリ

Who is uehatsu?

uehatsu

アーカイブ

Facebook page