CentOS 6.5 x86_64 minimalのVagrant boxを作ってみた
(2015/05/11追記)
下記の方法を元にCentOS 6.6のVagrant boxの作成方法を、別エントリーにまとめた。
CentOS 6.6 x86_64 minimalのVagrant boxを作る - 作業ノート
少し前に、 実践 Vagrantを読み終えた。書籍の感想は別のブログに書いたが、ここではVagrant boxの作成方法についてまとめる。
今回作成した理由は、自分用の開発環境のベースとなるboxを事前に用意しておきたかったから。CentOS 6.5を選んだのは、会社で管理しているLinux OSのほとんどがRedHat系だから。
boxの作成環境はOS X Mavericksで、VirtualBox、Vagrantはインストール済。
ISOのダウンロード
CentOS ProjectからCentOS-6.5-x86_64-minimal.isoをダウンロード。
仮想マシンの新規作成
VirtualBox上で仮想マシンを作成する。
- 仮想マシン名はvg_centos65。この名前は
vagrant
コマンドでboxを作成する時に指定する名前になる。 - TypeはLinux。バージョンはRed Hat (64bit)。
- メモリは512MB。ファイルタイプはVDI、可変サイズにして、容量を8GBにした。
- ネットワークアダプタは、アダプター1のみでNATが割り当てられていることを確認。誤った設定がされていると、
vagrant ssh
コマンドでログインできなくなるため、念のために確認した。
OSインストール
作成した仮想マシンの設定で、ストレージのCD/DVDの項目の対象ドライブにダウンロードしたISOを指定し、仮想マシンを起動してOSをインストール。
- 日本語環境を構築
- 英語キーボードを使っているのでキーボードはusを選択
- ハードディスクでドライブエラーのWarningが表示されるので、Re-initializeを選択
- Time ZoneはAsia/Tokyo
- ルートパスワードを設定
- Partitioning TypeでUse entire driveを選択してパーティションを作成
- Package Installationが完了するのを待つ
インストール完了後、再起動してルートユーザでログイン。
eth0の有効化
このままだと、OS起動時にネットワークカードが認識されないので、設定を変更する。
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
…
# これをyesにする。
ONBOOT=yes
設定後、OSを一度再起動して、OS起動時に認識されるか確認する。
# shutdown -r now
再起動後
# ifconfig
eth0の項目があればOK。
ホスト側(Mac)からsshでログインする
VirtualBoxのコンソールでは以後の作業がしにくいので、一時的にMacのターミナルからsshでログインして作業ができるようにする。
以下は、VirtualBoxの仮想マシンの設定変更。
- 仮想マシンの設定を開く。
- ネットワークのアダプター1(NAT)を選択し、「高度」の内容を展開。
- 下部に表示される「ポートフォワーディング」ボタンを押してメニューを表示。
- 項目を新規追加。ホストポートに2222、ゲストポートに22を入力。他はそのままにしてOKボタンを押す。
- 設定画面のOKボタンを押す。
設定が完了したら、Macのターミナルを開いてsshでログインする。
$ ssh localhost -p 2222 -l root
これでログインできればOK。
yum repositoryの登録
epel, Repoforge, remiを登録。該当rpmパッケージのインストールのみ。
# curl -L -O http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
# curl -L -O http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
# curl -L -O http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# rpm -ivh epel-release-6-8.noarch.rpm rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm remi-release-6.rpm
Vagrantユーザの作成と設定
ユーザ作成
# useradd -m vagrant
# passwd vagrant
sshの設定
vagrant ssh
で必要な公開鍵を登録する。
# mkdir /home/vagrant/.ssh
# chmod 700 /home/vagrant/.ssh
# cd /home/vagrant/.ssh
# curl -k -L -o authorized_keys 'https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub'
# chmod 600 /home/vagrant/.ssh/authorized_keys
# chown -R vagrant.vagrant /home/vagrant/.ssh
sudoの設定
vagrantユーザがパスワードなしでsudoを実行できるようにし、TTYなしで実行できるようにrequirettyを無効にする。
# visudo
…
# TTYなしで実行できるように
#Defaults requiretty
…
# sudoコマンドをパスワードなしで実行できるように
vagrant ALL=(ALL) NOPASSWD: ALL
vagrantユーザになって、確認する。
# su - vagrant
$ sudo ls /root
rpmパッケージのインストール
インストール済パッケージを更新。
# yum update
実際に試したときは、kernelのアップデートも含まれていたので、ここでOSを再起動した。
box作成のために必要なのは、VirtualBox Guest Additionsのインストールに必要なパッケージ。ただ、開発環境として利用することを想定しているので、併せて必要だと思うパッケージもインストール。
# yum groupinstall "Development Tools"
# yum install man man-pages-ja
gitは既存のバージョンが古いので、それらをアンインストールしてRepoforgeのgitをインストール。
# yum remove git-1.7.1-3.el6_4.1.x86_64 perl-Git-1.7.1-3.el6_4.1.noarch
# yum --enablerepo=rpmforge-extras install git
selinuxの無効化
開発環境なのでselinuxは無効化。
# vi /etc/sysconfig/selinux
# disabledに変更
SELINUX=disabled
iptablesの無効化
こちらも同様の理由で無効化。
# service iptables stop
# service ip6tables stop
# chkconfig iptables off
# chkconfig ip6tables off
VirtualBox Guest Additionsのインストール
まず、仮想マシン(VirtualBox VM)のメニューのDevicesからInsert Guest Additions CD image …を選択する。
そして、それをマウントしてCD内のコマンドを実行する。
# mkdir /media/cdrom
# mount -r /dev/cdrom /media/cdrom
# sh /media/cdrom/VBoxLinuxAdditions.run
# umount /media/cdrom
最後に、仮想マシン(VirtualBox VM)のメニューのDevicesからCD/DVD Devicesを選択し、Remove disk from virtual driveを選択してGuest Additions CD imageを取り出す。
udevのルールの削除
boxのOS起動時にネットワークデバイスのエラーが起きるのを避けるため、udevのルールを削除する。
# rm /etc/udev/rules.d/70-persistent-net.rules
# rm -rf /dev/.udev/
# rm /lib/udev/rules.d/75-persistent-net-generator.rules
box作成のための最適化
最終的なboxのサイズをできる限り小さくするために簡単な最適化を行う。
yum clean
# yum clean all
フラグメンテーションの解消
box作成時の圧縮効率を上げるため、ゼロ埋めしたファイルを作成し、削除する。
# dd if=/dev/zero of=/EMPTY bs=1M
# rm -f /EMPTY
OS シャットダウン
# shutdown -h now
NATのポートフォワーディング設定の削除
作業をしやすくするために行ったポートフォワーディングの設定を削除する。
- 仮想マシンの設定を開く
- ネットワークのアダプター1(NAT)を選択し、「高度」の内容を展開。
- 下部に表示される「ポートフォワーディング」ボタンを押してメニューを表示。
- 作成した項目を選択してDelキーを押して削除。その後下部のOKボタンを押す。
- 設定画面のOKボタンを押す。
以上でboxの作成準備が完了。
boxの作成
OS Xのターミナルから、Vagrantコマンドでboxを作成する。
$ vagrant package --base vg_centos65
baseオプションは仮想マシン名を指定する。
これで作成されたboxのサイズは470MBほど。
作成したboxの確認
作成したboxをVagrantに登録する。
$ vagrant box add --name CentOS-6.5-x86_64-minimal-ja-20140511 package.box
$ vagrant box list
CentOS-6.5-x86_64-minimal-ja-20140511 (virtualbox, 0)
Vagrantfileを作成して起動。sshでログインできるか確認する。
$ vagrant init CentOS-6.5-x86_64-minimal-ja-20140511
$ vagrant up
$ vagrant ssh
以上でboxの作成は完了。このboxをベースにシステムの開発環境を構築して開発を行う。