はじめに
第1回の記事では、VBoxManageを使用した仮想マシンの作成方法について解説しました。第2回は、作成した仮想マシンにVagrant用設定を追加するVagrant化の方法について解説します。
仮想マシンのVagrant化
OSをインストールした後に、Vagrant Boxとして利用できるように仮想マシンを構成する必要があります。
以下の手順で、仮想マシンをVagrant化します。
設定作業は、全てVirtualBoxコンソール上で行います。
1.ネットワーク設定
DHCPを有効にし、ホスト名を設定します。ホスト名には、centos64-x86_64を設定しています。
設定したら、ifconfigコマンドを使用してIPアドレスが取得できたかを確認します。
2.Firewallおよび、SELinix Policyの無効化
Firewallおよび、SELinix Policyを無効にします。
# service iptables stop # chkconfig iptables off # setenforce 0
/etc/sysconfig/selinuxを編集して、SELINUXTYPE=disabledに設定します。
/etc/grub.confを編集して、enforcing=0をkernelパラメータに追加します。
パラメータの追加を行わないまま、仮想マシンを再起動すると仮想マシンが再起動できなくなりますので、注意して下さい。
3.MACアドレスの自動保存無効化
Debian系Linixでは、MACアドレスを記録しており、MACアドレスが変更されると異なるNICデバイス名を割り当てる事になります。このため、MACアドレス自動保存機能を無効化することで、見つかったNICに対して適正なNICデバイス名を割り当てることができます。
# cd /etc/udev/rules.d/ # sudo mv 70-persistent-net.rules .70-persistent-net.rules # sudo ln -s /dev/null 70-persistent-net.rules
4.vagrantユーザーの作成
vagrantコマンドによるBoxの接続に使用されるアカウントを作成します。
パスワードは、通常vagrantを指定していますが、任意のパスワードを設定することができます。
# groupadd vagrant # useradd -g vagrant vagrant # passwd vagrant
5.sudo設定
vagrantユーザーに、パスワード無しでroot権限を与えられるように、sudoを設定します。
# echo 'vagrant ALL=NOPASSWD:ALL' > /etc/sudoers.d/vagrant # chmod 0440 /etc/sudoers.d/vagrant
設定したら、visudoコマンドを実行して、Defaults requirettyの設定をコメントアウトします。
VagrantではBoxとSSH接続を行いますが、ttyを経由しないSSH接続を行うため、sudo時にtty無しでコマンドを実行できるように設定します。
# su - vagrant $ sudo visudo
6.vagrant公開鍵の設定
vagrantコマンドでは、vagrantユーザーで、BoxとSSHで接続します。このため、仮想マシン上にvagrantユーザーのSSH公開鍵をインストールする必要があります。
$ mkdir ~/.ssh $ chmod 0700 ~ ~/.ssh $ curl -Lo ~/.ssh/authorized_keys https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pu $ chmod 0600 ~/.ssh/authorized_keys
7.VirtualBox Guest Addinのインストールに必要なパッケージのインストール
VirtualBox Guest Addinをインストールすると、共有フォルダや、シームレスなマウスの移動などの機能を利用できるため、Addinのビルドに必要なパッケージをインストールします。
インストールが終了したら、Addinのイメージの割り当てのために仮想マシンをシャットダウンします。
$ sudo yum -y install gcc kernel-devel kernel-headers dkms make bzip2 perl $ sudo yum -y update kernel* $ sudo yum -y update $ sudo shutdown -h now
8.VirtualBox Guest AddinのISOイメージの割り当て
VirtualBox Guest AddinのISOイメージをDVDドライブに割り当てた後、仮想マシンを起動します。
$ VBoxManage storageattach CentOS-6.4-x86_64-minimal --storagectl SATA --port 2 --type dvddrive --medium I:/ISO/VirtualBox/VBoxGuestAdditions_4.2.18.iso $ VBoxManage startvm CentOS-6.4-x86_64-minimal
9.VirtualBox Guest Addinのインストール
仮想マシンが起動したら、vagrantでログインして、Addinをインストールします。
インストールしたminimal構成では、X Window Systemはインストールされませんので、一部のモジュールがインストールされませんが、問題はありません。
$ sudo mount -r /dev/cdrom /mnt $ sudo sh /mnt/VBoxLinuxAdditions.run $ sudo umount /mnt
10.未使用領域のゼロフィル
仮想ハードディスクの未使用領域をゼロフィルします。実行することで、VM→Box変換時のBoxサイズを小さくすることができます。
ゼロフィルが終了したら、仮想マシンをシャットダウンします。
$ sudo dd if=/dev/zero of=/EMPTY bs=1M $ sudo rm -f /EMPTY $ sudo shutdown -h now
11.VirtualBox Guest AddinのISOイメージの取り出し
AddinのISOイメージをDVDドライブから取り出します。
$ VBoxManage storageattach CentOS-6.4-x86_64-minimal --storagectl SATA --port 2 --medium emptydrive
以上で、Vagrant Box用の設定が終了します。
VeeweeによるVagrant化
Veeweeは、手動で行った上記の処理をソフトウエアで行っていますので、以下のコマンドを実行して、Vagrant化した仮想マシンを作成することができます。
ここでは、ubuntu-12.10-server-i386テンプレートを使用して、仮想マシンを作成しています。
ただし、veeweeでは、MACアドレスの自動保存無効化処理を行わないため、veeeweeで作成したBoxに手動で設定を行うか、Veeweeのシェルスクリプトを修正して実行する必要があります。
$ mkdir -p ~/mybox/veewee && cd ~/mybox/veewee $ veewee vbox define 'ubuntu-12.10-server-i386' 'ubuntu-12.10-server-i386' $ veewee vbox build 'ubuntu-12.10-server-i386'
punio@PAPA ~/mybox/veewee $ veewee vbox build 'ubuntu-12.10-server-i386' Downloading vbox guest additions iso v 4.2.18 - http://download.virtualbox.org/virtualbox/4.2.18/VBoxGuestAdditions_4.2.18.iso Checking if isofile VBoxGuestAdditions_4.2.18.iso already exists. Full path: /home/punio/mybox/veewee/iso/VBoxGuestAdditions_4.2.18.iso The isofile VBoxGuestAdditions_4.2.18.iso already exists. Building Box ubuntu-12.10-server-i386 with Definition ubuntu-12.10-server-i386: - debug : false - cwd : /home/punio/mybox/veewee - force : false - nogui : false - auto : false - checksum : false - redirectconsole : false - postinstall_include : [] - postinstall_exclude : [] The isofile ubuntu-12.10-server-i386.iso already exists. Creating vm ubuntu-12.10-server-i386 : 512M - 1 CPU - Ubuntu Creating new harddrive of size 8192, format VDI, variant Standard Attaching disk: F:VirtualBox/ubuntu-12.10-server-i386/ubuntu-12.10-server-i3861.vdi Mounting cdrom: /home/punio/mybox/veewee/iso/ubuntu-12.10-server-i386.iso Mounting guest additions: /home/punio/mybox/veewee/iso/VBoxGuestAdditions_4.2.18.iso Finding unused TCP port in range: 7222 - 7262 Selected TCP port 7222
まとめ
ここまで、仮想マシンにVagrant Box用の設定を追加する方法を解説しました。veeeweeでは、今回行った作業を自動化していますが、既存の仮想マシンをVagrant化するためには、今回解説した設定作業が必要になります。第3回は、Vagrant化した仮想マシンをVagrant Boxに変換して起動する方法を解説します。
本ブログは、Git / Subversion のクラウド型ホスティングサービス「tracpath(トラックパス)」を提供している株式会社オープングルーヴが運営しています。
開発の効率化をしたい!もっと便利なツールを使いたい!そんなお悩みをtracpathで解決!
「tracpath(トラックパス)」は、企業内の情報システム部門や、ソフトウェア開発・アプリケーション開発チームに対して、開発の効率化を支援し、品質向上を実現します。
さらに、システム運用の効率化・自動化支援サービスも提供しています。
”つくる情熱を支えるサービス”を提供し、まるで専属のインフラエンジニアのように、あなたのチームを支えていきます。
No Comments