結構いろいろな所でBoxの配布をしてますが、 稼働中のサーバのイメージをBox化したり自分で自作してみたりと 知識として知っておいたほうがいいかなと思い自作してみました。
今回はCentOS6.6を使って進めていきます。
1. OSイメージのダウンロード
公式サイトからiso形式のデータをダウンロード
2. 仮想マシンの新規作成
VirtualBox上で仮想マシンを作成する。
下記の構成で作成する
仮想マシン名: centos66
Type: Linux
バージョン: Red Hat (64bit)
メモリ: 512MB
ファイルタイプ: VDIで可変サイズを選択し、容量は8GB
ネットワークアダプタ: アダプター1のみ。NATが割り当てられていること
OSインストール
仮想マシンの設定が済んだら、ストレージのCD/DVDの項目にダウンロードしたISOを指定し、仮想マシンを起動してOSをインストール
インストール時にいろいろ聞かれますが、自分の環境に合わせて設定してください。 恐らくハードディスクでWarningが表示されるので、ここではRe-initializeを選択 rootのパスワードは「vagrant」にします。 Partitioning TypeでUse entire driveを選択してパーティションを作成してください。 インストール完了後、再起動を促されるので再起動すると完了します。
3. OS設定
eth0の有効化
OS起動時にネットワークカードが認識されるように設定を変更する。
vi /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=no
↓
ONBOOT=yes
OS再起動
一度OSを再起動して認識されるか確認
shutdown -r now
以下のコマンドを実行して確認
ifconfig
eth0の項目があればおk
ホスト側(Mac)からsshでログインする
Macのターミナルからsshでログインできるようにする。
VirtualBoxの仮想マシンの設定変更
- 仮想マシンの設定を開く
- ネットワークのアダプター1(NAT)を選択し、「高度」の内容を展開
- 「ポートフォワーディング」を押してメニューを表示
- 新規追加でホストポートに2222、ゲストポートに22を入力
- 設定画面のOKボタンを押す
Macのターミナルを開いてsshでログインする。
ssh localhost -p 2222 -l root
yumリポジトリの登録
Repoforgeを登録
curl -L -O http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
yum install rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
EPELを登録
yum install epel-release
Remiを登録
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
Vagrantユーザの作成と設定
ユーザ作成
useradd -m vagrant
passwd vagrant
パスワードは「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 upコマンド内でsudoコマンドを使用するので、 TTYなしでsudoコマンドを実行できるようにして、vagrantユーザがsudoコマンドをパスワードなしで使用できるようにする。
visudo
Defaults requiretty
↓
#Defaults requiretty
#新規追加
vagrant ALL=(ALL) NOPASSWD: ALL
vagrantユーザになって確認
su - vagrant
sudo ls -l /root
インストール済パッケージを更新
yum update
VirtualBox Guest Additionsに必要なパッケージをインストール
yum install kernel kernel-devel perl gcc
selinuxの無効化
vi /etc/sysconfig/selinux
SELINUX=enforcing
↓
SELINUX=disabled
iptablesの無効化
service iptables stop
service ip6tables stop
さらにOS起動時に自動起動しないようにする
chkconfig iptables off
chkconfig ip6tables off
VirtualBox Guest Additionsのインストール
まず、仮想マシン(VirtualBox VM)のメニューのデバイスからInsert Guest Additions CD imageを選択 それをマウントしてCD内のコマンドを実行する。
mkdir /media/cdrom
mount -r /dev/cdrom /media/cdrom
sh /media/cdrom/VBoxLinuxAdditions.run
umount /media/cdrom
udevのルールの削除
OS起動時にネットワークデバイスのエラーが起きるのを回避するため、udevのルールを削除する。
rm -f /etc/udev/rules.d/70-persistent-net.rules
rm -rf /dev/.udev/
rm -f /lib/udev/rules.d/75-persistent-net-generator.rules
Box作成のための最適化
最終的なBoxのサイズをできる限り小さくするため最適化を行う。
yum clean all
フラグメンテーションの解消
Box作成時の圧縮効率を上げるため、ゼロ埋めしたファイルを作成して削除する。
dd if=/dev/zero of=/EMPTY bs=1M
rm -f /EMPTY
OSシャットダウン
shutdown -h now
NATのポートフォワーディング設定の削除
作業をしやすくするために行ったポートフォワーディングの設定を削除する。
VirtualBoxの仮想マシンの設定変更
- 仮想マシンの設定を開く
- ネットワークのアダプター1(NAT)を選択し、「高度」の内容を展開
- 「ポートフォワーディング」を押してメニューを表示
- 先ほど作成した項目を選択して削除
- 設定画面のOKボタンを押す
4. Boxの作成
MacのターミナルからVagrantコマンドを使用してBoxを作成する。
vagrant package --base centos66
baseオプションは仮想マシン名を指定する。
作成したBoxをVagrantに登録する。
vagrant box add --name CentOS-6.6-x86_64-minimal-ja-20150510 package.box
vagrant box list
Vagrantfileを作成して起動
vagrant init CentOS66
vagrant up
vagrant ssh