読者です 読者をやめる 読者になる 読者になる

作業ノート

様々なまとめ、雑感など

CentOS 6.6 x86_64 minimalのVagrant boxを作る

CentOS Vagrant

1年ほど前にCentOS 6.5 x86_64 minimalのVagrant boxを作った。今回はその方法を元にCentOS 6.6 x86_64 minimalのVagrant boxを作る。

前回とは以下の点が違う。

  • 本家のドキュメントに従い、以下の設定を行った。
    • OSインストール前に、仮想マシンのオーティオとUSBを無効化した。
    • root、vagrantのパスワードをvagrantに統一した。
  • yumリポジトリの登録は、RepoForgeのみにした。

作成環境は以下。

  • Mac OS X Yosemite (10.10.3)
  • VirtualBox 4.3.26
  • Vagrant 1.7.2

ISOのダウンロード

Download - CentOS WikiからCentOS-6.6-x86_64-minimal.isoをダウンロード。

仮想マシンの新規作成

VirtualBox上で仮想マシンを作成する。

  • 仮想マシン名はcentos66。
  • TypeはLinux。バージョンはRed Hat (64bit)。
  • メモリは512MB。ファイルタイプはVDI、可変サイズにして、容量を8GBにした。
  • ネットワークアダプタは、アダプター1のみでNATが割り当てられていることを確認。

仮想マシンの設定変更

OSをインストールする前に、オーディオとUSBを無効化する。

  • VirtualBoxマネージャーを起動し、左側から作成した仮想マシンを選択する。
  • 右側に表示された仮想マシンの詳細からオーディオを無効化する。
    • オーディオをクリックし、設定画面を開く。
    • オーディオ有効化のチェックをはずす。
  • 同様にUSBを無効化する。
    • USBをクリックし、設定画面を開く。
    • UBSコントローラを有効化のチェックをはずす。

OSインストール

作成した仮想マシンの設定で、ストレージのCD/DVDの項目の対象ドライブにダウンロードしたISOを指定し、仮想マシンを起動してOSをインストール。

  • 日本語環境を構築。
  • 英語キーボードを使っているのでキーボードはusを選択。
  • ハードディスクでドライブエラーのWarningが表示されるので、Re-initializeを選択。
  • Time ZoneはAsia/Tokyo。
  • rootのパスワードを設定。
  • Partitioning TypeでUse entire driveを選択してパーティションを作成。
  • Package Installationが完了するのを待つ。

インストール完了後、再起動してルートユーザでログイン。

eth0の有効化

OS起動時にネットワークカードが認識されるように設定を変更する。

# vi /etc/sysconfig/network-scripts/ifcfg-eth0
...
# これをyesにする。
ONBOOT=yes

OSを一度再起動して認識されるか確認する。

# shutdown -r now

再起動後に

# ifconfig

eth0の項目があればOK。

ホスト側(Mac)からsshでログインする

今後の作業のために、一時的にMacのターミナルからsshでログインできるようにする。

以下は、VirtualBoxの仮想マシンの設定変更。

  • 仮想マシンの設定を開く。
  • ネットワークのアダプター1(NAT)を選択し、「高度」の内容を展開。
  • 下部に表示される「ポートフォワーディング」ボタンを押してメニューを表示。
  • 項目を新規追加。ホストポートに2222、ゲストポートに22を入力。他はそのままにしてOKボタンを押す。
  • 設定画面のOKボタンを押す。

設定が完了したら、Macのターミナルを開いてsshでログインする。

$ ssh localhost -p 2222 -l root

これでログインできればOK。

yumリポジトリの登録

Repoforgeを登録。該当rpmパッケージのインストールのみ。

# 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

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コマンドを実行できるようにし(1)、vagrantユーザがsudoコマンドをパスワードなしで使用できる(2)ように設定する。

# visudo
...
# (1) TTYなしでも実行できるようにする
# Defaults    requiretty
...
# (2) vagrantユーザがsudoコマンドをパスワードなしで実行できるようにする
vagrant ALL=(ALL)       NOPASSWD: ALL

vagrantユーザになって確認する。

# su - vagrant
$ sudo ls /root

rpmパッケージのインストール

インストール済パッケージを更新。

# yum update

kernelのアップデートが含まれていたので、ここでOSを再起動。

開発環境として必要なパッケージとVirtualBox Guest Additionsに必要なパッケージをインストール。

# LANG=C yum groupinstall "Development tools"
# yum install man man-pages man-pages-overrides 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 -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

# 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 centos66

baseオプションは仮想マシン名を指定する。作成されたboxのサイズは482MBほど。

作成したboxの確認

作成したboxをVagrantに登録する。

$ vagrant box add --name CentOS-6.6-x86_64-minimal-ja-20150510 package.box
$ vagrant box list
CentOS-6.6-x86_64-minimal-ja-20150510 (virtualbox, 0)

Vagrantfileを作成して起動。sshでログインできるか確認する。

$ vagrant init CentOS-6.6-x86_64-minimal-ja-20150510
$ vagrant up
$ vagrant ssh

以上でboxの作成は完了。

参考