Skip to content

Instantly share code, notes, and snippets.

@t-oginogin
Last active February 11, 2016 11:45
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save t-oginogin/6832937 to your computer and use it in GitHub Desktop.
Save t-oginogin/6832937 to your computer and use it in GitHub Desktop.

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

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

http://ftp.riken.jp/Linux/centos/5.6/isos/i386/CentOS-5.6-i386-bin-DVD.iso

http://download.filesystems.org/linux/centos/CentOS-5.6-x86_64-bin-DVD-1of2.iso

http://download.filesystems.org/linux/centos/CentOS-5.6-x86_64-bin-DVD-2of2.iso

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment