53
60

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VagrantでオリジナルBoxを作成する

Posted at

結構いろいろな所でBoxの配布をしてますが、 稼働中のサーバのイメージをBox化したり自分で自作してみたりと 知識として知っておいたほうがいいかなと思い自作してみました。

今回はCentOS6.6を使って進めていきます。

1. OSイメージのダウンロード

公式サイトからiso形式のデータをダウンロード

CentOSダウンロードページ

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. 仮想マシンの設定を開く
  2. ネットワークのアダプター1(NAT)を選択し、「高度」の内容を展開
  3. 「ポートフォワーディング」を押してメニューを表示
  4. 新規追加でホストポートに2222、ゲストポートに22を入力
  5. 設定画面の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. 仮想マシンの設定を開く
  2. ネットワークのアダプター1(NAT)を選択し、「高度」の内容を展開
  3. 「ポートフォワーディング」を押してメニューを表示
  4. 先ほど作成した項目を選択して削除
  5. 設定画面の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
53
60
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
53
60

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?