cygwin + vagrant + virtualbox 環境構築


やりたいこと


cygwinからvagrant(インストールして)で、仮想マシン(vm:今回はvirtualboxを使います)起動できるようにする(ローカル環境を構築)。

vagrantを利用するために...


まず、boxファイルというものが必要となります。
ちなみにですが、boxファイルの作成方法には、既存のものを入手するか、自作するかの2通りありますが、今回は自作します。
手順覚えておけば、今後配布とか、自分でも有効利用ができるので。

総じていうと、これまで、xamppでのローカル環境でしたが、ちょうどいい機会なので、もろもろ試す意図が大きいです。

実際のローカル環境は

  • Windows7 64bit
  • メモリ:8G
  • SSD 128GB (残20GB未満)ヤバイ・・・

手順


  1. 必要なもの入手(cygwin、virtualbox、vagrant)
  2. virtualbox設定
  3. 2.からbox作成
  4. 作成したboxからvmを起動する

macにしたい。。

1. 必要なもの入手

Windows7にCygwinを入れてみた。 - まりうすメモ

=> 上記とおり、インストールまで完了する。

=> win版でインストールまで完了しておく

※【Cygwinで Vagrantを利用するための設定】をしておいてください。

dos2unix /cygdrive/c/HashiCorp/Vagrant/bin/vagrant

vagrantがスゲエ!コマンドラインからVirtualBoxを自由自在に操る方法 | Futurismo

VagrantのVirtualBoxで利用するboxを作成 CentOS(6.4) ver. - Done is better than Perfect

=> virtualboxのインストールまで行っておく。ほぼこの通りに実行していきますが、vmの設定やbox作成等の詳細は、後の手順でも詳述します。

また、上記で使うイメージファイルがなければ、下記より取得しておいてください。

※ご使用になりたいバージョンのものを選択してください

2.VirtualBox の設定


  1. VirtualBoxを起動し、「新規」を選択(以降GUIで設定)

  ex) 名前: vagrant-centos66
2. 続けるを選択して、メモリの設定

  メモリ: 512MB
3. ハードドライブの設定

  仮想ハードドライブを作成する
4. ハードドライブのファイルタイプ

  VDI(VirtualBox Disk Image)
5. 物理ハードドライブにあるストレージ

  可変サイズ
6.ファイルの場所とサイズ

  初期設定
ここで一旦、vm側の初期設定は完了、以下の設定も加えておく。

  • USB:OFF
  • ポートUSBを選択し、USBコントローラーを有効化のチェックを外す
  • オーディオ:OFF
  • オーディオを選択し、オーディオを有効化のチェックを外す
  • ポートフォワーディング:ネットワークからアダプター1を選択、高度のタブを開きポートフォワーディングを選択

以下の設定を右上の+ボタンから追加

  • 名前: SSH
  • プロトコル:TCP
  • ホストIP:127.0.0.1
  • ホストポート:2222
  • ゲストIP:10.0.2.15
  • ゲストポート:22

vmにOSをインストールする


対象のマシンをVirtualBox上で選択し、起動を選択するとOSのisoイメージの選択画面となるので、上記で予め手元にダウンロードしておいたイメージファイル を選択して、START

  1. 起動すると、最初に「Welcome to CentOS 6.4!」の画面が表示されます。     「Install or upgrade an existing system」を選択してEnter
  2. Disc Found   Skipを選択
  3. Unsupported Hardware Detected  OK
  4. CentOS  OK
  5. Language Selection   English
  6. Keyboard Selection   US
  7. Warning
     Warningがでるが、ここは「Re-initialize-all」を選択

  8. Time Zone Selection
     Asia/Tokyoを選択

  9. Root Password
     vagrant
     ※Weak Passwordのアラートがでるが、ここはvagrantで設定する必要がある。

  10. Partitioning Type
      Use entire drive

  11. Writing storage configuration to disk
      Write changes to disk

以上、vmの設定が終わったところでrebootし、以下の内容でログインする。
localhost login : root
Password : vagrant

今回はminimalでインストールを実施したので、起動時にupしていないNICの設定を見直す。
以下のとおり。


sed -i -e "s:^ONBOOT=no$:ONBOOT=yes:" /etc/sysconfig/network-scripts/ifcfg-eth0
cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep ONBOOT
service network restart
ip addr show eth0

続けて、MACアドレスとUUIDを無効化


sed -i -e "s:^ONBOOT=no$:ONBOOT=yes:" /etc/sysconfig/network-scripts/ifcfg-eth0
cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep ONBOOT
service network restart
ip addr show eth0

sshの設定後。 UseDNS を起動


sed -i -e "s:^ONBOOT=no$:ONBOOT=yes:" /etc/sysconfig/network-scripts/ifcfg-eth0
cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep ONBOOT
service network restart
ip addr show eth0

vagrant用のユーザー設定


ここからはcygwinから作業を行う。

  • ssh root@localhost -p 2222
  • groupadd vagrant
  • useradd vagrant -g vagrant -G wheel

sudo設定

  • echo "vagrant ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

requiretty を無効

  • sed -i -e "s:^.*requiretty:#Defaults requiretty:" /etc/sudoers

vagrantユーザ用の公開鍵を配置

VirtualBox の Guest Additions をインストール


ここからは、cygwin(じゃなくていいんですが、)でvmにログイン後、まず、wgetできるようにしてから、vagrant公式ドキュメントのとおりにインストールしてきます。

virtualbox Guest Additionsバージョンは、ご自身のインストしたものを選んでください。

  • mkdir /media/VBoxGuestAdditions
  • mount -o loop,ro VBoxGuestAdditions_4.3.20.iso /media/VBoxGuestAdditions
  • sudo sh /media/VBoxGuestAdditions/VBoxLinuxAdditions.run

とやっても、karnel-develのバージョンが古いと怒られるので、yumではなくrpmで
インストールする。

【error】

The headers for the current running kernel were not found. If the following
module compilation fails then this could be the reason.
The missing package can be probably installed with
yum install kernel-devel-2.6.32-504.el6.i686.rpm
:
Building the main Guest Additions module [失敗]
(Look at /var/log/vboxadd-install.log to find out what went wrong)
Doing non-kernel setup of the Guest Additions [ OK ]
Installing the Window System drivers [失敗]
(Could not find the X.Org or XFree86 Window System.)

がエラー。。。gccがないとのことなので、
※64bit版でやってみたところmakeも足りてなかった・・・

  • yum install -y gcc make
  • sh /media/VBoxGuestAdditions/VBoxLinuxAdditions.run (再度実行)

で、Guest Additions をインストール完了。

3. 2.からbox作成


boxファイルを作成する。on cygwin
※この時点で仮想マシンが起動中だったら、シャットダウンしておくこと。

  • cd ~/VirtualBox VMs/centos66
  • vagrant package --base centos66 --output centos66.box
  • ls -la centos66

4. 作成したboxからvmを起動する


  • vagrant box add centos66 centos66.box
  • vagrant init centos66
  • vagrant up

自分の場合、ここで、vagrantでmountエラーとなったので、

Failed to mount folders in Linux guest. This is usually beacuse
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t vboxsf -o uid=id -u vagrant,gid=getent group apache | cut -d: -f3,dmode=777,fmode=777 /vagrant /vagrant
mount -t vboxsf -o uid=id -u vagrant,gid=id -g apache,dmode=777,fmode=777 /vagrant /vagrant

再度、ログインして、vboxをリビルドして、

  • vagrant ssh
  • sudo /etc/init.d/vboxadd setup

vagrantを再起動します。

  • vagrant halt
  • vagrant up

で完了。

※参考URL

vagrantでmountエラー解決