VagrantのBase Boxを作ってみた。CentOS6.3 x86_64編
Vagrantは、Virtual BoxのVM(仮想サーバ)管理を簡単にするためのツールです。
VMを、コマンドラインから起動、停止、削除、etcできるので、テストや開発環境作成などでかなり重宝します。
今回はそのテンプレートになるBase Boxを作ってみたので、メモを残しておきます。
VagrantのBase Box作成を自動化するVeeweeというツールもありますが、
使ってみてうまくいかなかったので、今回は自分で作ります…。
今回試した環境はこんな感じ。
OS(Mac) | 10.8.2 |
Virtual Box | 4.2.6 |
Vagrant | 1.0.5 |
※Virtual BoxとかVagrantのインストールなどは、今回省略します。
VMは、CentOS6.3 x86_64です。
Virtual BoxのVM作成
まず、Virtual BoxのVMを作ります。
VMは下記のような感じで作りました。
Name: | vagrant-centos6.3 | |
Type: | Linux | |
Version: | Red Hat (64bit) | |
Memory size: | 512MB | |
Hard drive: | 8GB (新規作成) | |
Hard drive file type: | VDI, Dynamically allocated (動的割り当て) | |
Audio: | Disable | |
USB controller: | Disable | |
Port Forwarding: | Name: ssh, Protocol: TCP, Host Port: 2222, Guest Port: 22 |
起動させてOSをインストールします。
メモリが512MBしかないので、テキストモードのインストーラが起動します。(1GB以上だとGUIモード)
キーボード、言語環境を選択します。
テキストモードだと、パッケージ選択やパーティション設定などが設定できないので、
そのまま進めていけばインストーラが終わります。
VMの初期設定
次にいろいろとVMに初期設定を入れていきます。
ネットワークの有効化
そのままだとネットワークが有効になっていなかったので、有効にします。
# /bin/sed -i 's/ONBOOT="no"/ONBOOT="yes"/g' /etc/sysconfig/network-scripts/ifcfg-eth0 # /etc/init.d/networking restart
vagrantユーザの作成
sshで接続するために、vagrantユーザを作成します。
# /bin/sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication no/g' /etc/ssh/sshd_config # /etc/init.d/sshd reload # /usr/bin/yum -y install sudo # /usr/sbin/groupadd vagrant # /usr/sbin/useradd vagrant -g vagrant -G wheel # echo "vagrant"|passwd --stdin vagrant # echo "vagrant ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
ssh 接続
ポートフォワーディング機能で、ホスト側の2222ポートをゲストの22ポートに割り当ててるので、
localhostの2222にsshします。
$ ssh localhost -l vagrant -p 2222 $ su - # id
必要なパッケージのインストール
いろいろ入れます。
# yum -y install gcc make gcc-c++ ruby kernel-devel-`uname -r` zlib-devel openssl-devel readline-devel sqlite-devel perl
epelのリポジトリ設定ファイルを作成します。
# cat > /etc/yum.repos.d/epel.repo << EOM [epel] name=epel baseurl=http://download.fedoraproject.org/pub/epel/6/\$basearch enabled=1 gpgcheck=0 EOM
ruby-develとrubygemsをインストールします。
# yum -y install ruby-devel rubygems # yum -y clean all # rm -f /etc/yum.repos.d/epel.repo
chefクライアントのインストール
chefをインストールします。少し時間がかかるので、待ちます。
# gem install --no-ri --no-rdoc chef
vagrantユーザの公開鍵配置
vagrantユーザ用の公開鍵を配置します。
# mkdir /home/vagrant/.ssh # chmod 700 /home/vagrant/.ssh # cd /home/vagrant/.ssh # curl -L -o authorized_keys https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub # chown -R vagrant /home/vagrant/.ssh
VirtualBox Guest Additionsのインストール
VitualBoxゲストOS用ドライバVirtualBox Guest Additionsをインストールします。
# cd /tmp # curl -L -o VBoxGuestAdditions_4.2.6.iso http://download.virtualbox.org/virtualbox/4.2.6/VBoxGuestAdditions_4.2.6.iso # mount -o loop VBoxGuestAdditions_4.2.6.iso /mnt # sh /mnt/VBoxLinuxAdditions.run # umount /mnt # rm VBoxGuestAdditions_4.2.6.iso
他
# sed -i "s/^.*requiretty/#Defaults requiretty/" /etc/sudoers # sed -i "s/^#UseDNS yes/UseDNS no/g" /etc/ssh/sshd_config # dd if=/dev/zero of=/tmp/clean || rm /tmp/clean
Base Boxのパッケージ化
作ったVMをBase Boxにします。
$ vagrant package --base vagrant-centos6.3
カレントディレクトリにpackage.boxというファイルができます。
あとは、Base Boxをvagrantに登録して、起動させます。
$ vagrant box add my_box package.box $ mkdir test_environment $ cd test_environment $ vagrant init my_box $ vagrant up $ vagrant ssh
以上。
…と、まぁ、ほとんどveeweeの設定ファイルをなめただけなんですが、
とりあえず、流れが把握できたのとchefだけのBase Boxができたので、めでたしめでたし。
veeweeで失敗していたのは、ネットワーク周りが原因な気がする…。
まー、あとは、chefのcookbook作っていろいろ遊んでみよう。