LoginSignup
63
62

More than 5 years have passed since last update.

CentOS 5.6のVagrant boxを自前で作成する

Posted at

CentOS 5.6のVagrant boxを自前で作成する

veeweeやpackerは使わずVirtualBoxとVagrantだけで作ってみます

参考:
http://docs-v1.vagrantup.com/v1/docs/base_boxes.html

環境:
 VirtualBox 4.2.16
 Vagrant 1.2.7

インストールディスクダウンロード

VirtualBox起動

  • 新規で"CentOS56_32"を作成
  • 種類:Linux,RedHat
  • ビデオメモリ:8MB
  • ストレージ:VMDK 32GB(可変)
  • オーディオ:無効
  • USB:無効

インストール

  1. CD/DVDで"CentOS-5.6-i386-bin-DVD.iso"を選択
  2. VM起動

あとは通常のインストールの流れ。

(最小構成にしたいため、packageはBase、Text-based Internetのみcustomize)

GuestOS設定

rootのパスワード変更

$ passwd

でvagrantに変更。
(インストール時にvagrantと設定しておくと不要)

vagrantユーザ作成

$ useradd vagrant
$ passwd vagrant
$ groupadd admin
$ usermod -G admin -a vagrant

Permission設定

$ /usr/sbin/visudo

追加


Defaults env_keep += "SSH_AUTH_SOCK"
vagrant ALL=(ALL) ALL
%admin ALL=(ALL) NOPASSWD:ALL

変更

"Defaults requiretty" -> "Defaults !requiretty"

VirtualBox Gest Additionsインストール

カーネルソースとヘッダを取得する。

古いバージョンはyumのリストに含まれていないので、直接ダウンロードして展開する。

$ cd /usr/src/kernels
$ wget http://vault.centos.org/5.6/os/i386/CentOS/kernel-devel-2.6.18-238.el5.i686.rpm
$ wget http://vault.centos.org/5.6/os/i386/CentOS/kernel-headers-2.6.18-238.el5.i386.rpm
$ rpm -ivh kernel-devel-2.6.18-238.el5.i686.rpm
$ rpm -ivh kernel-headers-2.6.18-238.el5.i386.rpm
$ rm kernel-devel-2.6.18-238.el5.i686.rpm
$ rm kernel-headers-2.6.18-238.el5.i386.rpm
$ export KERN_DIR=/usr/src/kernels/2.6.18-238.el5-i686

$ yum -y install gcc

$ mkdir /mnt/cdrom
$ mount -r /dev/cdrom /mnt/cdrom
$ cd /mnt/cdrom/

$ sh VBoxLinuxAdditions.run

$ VBoxControl --version
$ VBoxService --version

$ cd ~/
$ umount /mnt/cdrom

ssh設定

$ sudo su vagrant
$ cd ~/
$ mkdir .ssh
$ curl https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub > .ssh/authorized_keys

proxy認証ではねられるときは --insecureオプションをつける。

$ chmod 0755 .ssh
$ chmod 0644 .ssh/authorized_keys

不要なファイルを削除

$ du -sh *

で大きいファイルを探して不要なら削除していく。

例:
* /usr/share/locale/ の使わないもの
* /usr/share/i18n/locales/ の使わないもの
* /usr/src/kernel/2.6.18-238.el5.i68
* /var/cache/fontconfig
* /var/cache/man
* /var/cache/yum

yumで使った不要ファイル削除

$ yum install yum-utils
$ package-cleanup --dupes
$ package-cleanup --cleandupes
$ package-cleanup --oldkernels
$ package-cleanup --problems

$ yum clean all

GuestOSシャットダウン

vagrantパッケージを作るためGuestOSをシャットダウン。

vagrantのパッケージ作成

cmd.exe起動。

仮想環境を起動したいフォルダに移動。(例:vagrant_home\centos56)

> vagrant package --base "C:\Users\user\VirtualBox VMs\CentOS56_32\CentOS56_32.vbox" --output centos56.box
> vagrant init
> vagrant box add centos56 centos56.box
> vagrant up

MacではVM名に拡張子(vbox)をつけるとうまく出力されなかったので、vboxをつけずに実行

$ vagrant package --base /Users/user/VirtualBox\ VMs/CentOS56/CentOS56_32 --output centos56.box

※共有フォルダ/vagrantがマウントされない場合GuestOS側で次を実行。

$ mkdir /vagrant
$ mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` v-root /vagrant

もし

/sbin/mount.vboxsf: mounting failed with the error: Protocol error

となれば、VirtualBox側の共有フォルダ設定を削除してGuestOSを再起動させるとうまく設定された。

vmdk圧縮(必要なら実行)

不要ファイル削除。

$ du -sh *

で大きいファイルを探して不要なら削除していく。

localeの下の使っていない言語のものは削除。

GuestOS側で未使用領域を0埋め。(仮想HDDのMAXまで埋め尽くす)

$ dd if=/dev/zero of=zero bs=4k
$ rm zero

vmdk->vdi変換

> VBoxManage clonehd 変換前.vmdk 変換前.vdi --format vdi

圧縮

> VBoxManage.exe modifyhd 変換前.vdi compact

vdi->vmdk変換

> VBoxManage clonehd 変換前.vdi 変換後.vmdk --format vmdk

Chefインストール

SELinuxを無効化(要再起動)

$ sudo vi /etc/selinux/config

"SELINUX=enforcing" -> "SELINUX=disabled"

opensslインストール(Ruby2.0.0で必要)

$ sudo yum install openssl-devel

readlineインストール(Ruby2.0.0で必要)

$ sudo yum install readline-devel

zlibインストール(Ruby2.0.0で必要)

$ sudo yum install zlib-devel

RubyとRubyGemsをインストール

$ cd /usr/src
$ sudo wget http://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz
$ sudo tar zxvf ruby-2.0.0-p247.tar.gz
$ cd ruby-2.0.0-p247

$ sudo ./configure --disable-install-doc --disable-install-rdoc --disable-install-capi
$ sudo make
$ sudo make install
$ sudo make clean
$ ruby -v
$ cd ../
$ sudo rm -rf ruby-2.0.0-p247*

Chefインストール

$ sudo gem install chef --no-ri --no-rdoc
$ knife -v
63
62
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
63
62