LoginSignup
3
3

More than 5 years have passed since last update.

Vagrant カスタムboxの作成(CentOS6 + Virtualbox)

Last updated at Posted at 2015-12-05

概要

Virutalbox でカスタムBoxを作る手順。boxは、yum update しつつ運用していこうと考えている。
ゲストOS はCentOS6を想定しているが、CentOS7やUbuntでも役に立つ。

(後日修正の可能性がある。)

環境

 Boxを作成するために使ったホストOSの環境。ホストOSはOSX。一連の操作は、Linuxでもおそらく同じ。

$ sw_vers 
ProductName:    Mac OS X
ProductVersion: 10.10.5
BuildVersion:   14F1021
$ uname -mrs
Darwin 14.5.0 x86_64
$ VBoxManage --version
5.0.10r104061

元になるゲストOSをインストール

 Virutalbox上でゲストOSをインストールする。新規で作成し、名前を"CentOS6"としている。
 カスタムBoxを作るのが目的なので基本的には好きにしていい。ただし、BoxはゲーストOSをアーカイブしてダウンロードすることになるため、最小パッケージがおすすめ。Hashicorpへの公開を前提とすればインターネットを介してダウンロードすることになるので、OSのサイズは小さい方がいい。
 インストールが終わったらゲストOSをshutdownするが、その前に必要なパッケージの追加や設定を行ってもいい。

Virtualboxの設定

以下のようにした。

変更する項目 変更後の値
メインメモリー 512MB
フロッピー 無効
アクセラレーション Legacy
オーディオ 無効
USBコントローラー 無効

その他は初期値のまま。

作業中のネットワーク設定

 SSHでログインしながら以降の操作をやるために、VirutalboxでNetwowkアダプター1の設定をNATからブリッジに変更。

ゲストOSの設定(1)

vagrantユーザーを追加

ゲストOSにて以下を実行。

sed -i -e s/^Defaults\ \ \ \ requiretty/#Defaults\ \ \ \ requiretty/g /etc/sudoers
useradd vagrant
[ -f /etc/sudoers.d/vagrant ] || echo "%vagrant ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/vagrant
mkdir -m 700 /home/vagrant/.ssh
mkdir -p /vagrant
chown vagrant:vagrant /home/vagrant/.ssh

echo "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key" > /home/vagrant/.ssh/authorized_keys

chmod 600 /home/vagrant/.ssh/authorized_keys
chown vagrant:vagrant /home/vagrant/.ssh/authorized_keys

ユーザーのパスワードが必要な場合はつぎのようにする。
echo "PASSWORD" | passwd user_name --stdin

echo "vagrant" |passwd vagrant --stdin

Virtualbox additonal CD のインストール

ツールをインストールしないと、"varant up"したときにホストOSとの共有ディレクトリ/vagrantをマウントできない。また、ゲストOS起動時にエラーとなってしまう。

まず、ツールのCDイメージをマウントする。
[Dvice] -> [Instert Guest Additions CD images]

Additional toolsをインストールするためにはツールを再構築しなければいけない。
最小インストールの場合は、つぎのように追加でパッケージをインストールしておく。

yum -y install openssh-clients libedit kernel-devel gcc ppl libgomp cloog-ppl cpp mpfr glibc-headers glibc-devel kernel-headers perl perl-Pod-Simple perl-libs perl-version perl-Pod-Escapes perl-Module-Pluggable
mount -o loop /dev/sr0 /mnt
/mnt/VBoxLinuxAdditions.run --nox11
/etc/init.d/vboxadd setup

この時点で、光学ドライブは有効なままになっているが、今後使う予定がなければ無効にする。

MACアドレスの消去

MACアドレスの情報を消去する。
OS起動時に、記録されないようにする。

> /etc/udev/rules.d/70-persistent-net.rules
sudo sed -i -e 's|/etc/udev/rules.d/70-persistent-net.rules|/dev/null|g' /lib/udev/write_net_rules
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EOF
DEVICE=eth0
TYPE=Ethernet
BOOTPROTO=dhcp
ONBOOT=yes
NETBOOT=yes
IPV6INIT=yes
EOF

カスタマイズ

パッケージの追加や必要な設定を行う。

ログの消去

配布するBoxサイズを少しでも小さくするために、ログを消去する。
リモートからはできないので、Virtualboxのコンソールから操作。

init 1
find /var/log -type f -exec rm -f {} \;
rm -f /home/vagrant/.bash_history
rm -f /root/.bash_history
history -c
shutdown -h now

boxアーカイブの作成

作成したカスタムboxのアーカイブ

ここでは、centos6.boxという名でアーカイブを作成する。

cd ${HOME}/VirtualBox\ VMs/
vagrant package --base CentOS6 --output centos6.box

Boxの登録

vagrant box add test-centos6 centos6.box

作成したカスタムBoxのテスト

vagrant init test-centos6 
vagrant up --provider=virtualbox
vagrant ssh

エラーがなければ終わり

Boxの公開&&アップロード

パブリックなWebサーバへアップロードすれば、hashicorpで公開できる。

Appendix

CentOSでVirtualboxのレポジトリを登録

sudo wget http://download.virtualbox.org/virtualbox/rpm/el/virtualbox.repo -P /etc/yum.repos.d/
3
3
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
3
3