###やりたいこと
cygwinからvagrant(インストールして)で、仮想マシン(vm:今回はvirtualboxを使います)起動できるようにする(ローカル環境を構築)。
###vagrantを利用するために...
まず、boxファイルというものが必要となります。
ちなみにですが、boxファイルの作成方法には、既存のものを入手するか、自作するかの2通りありますが、今回は自作します。
手順覚えておけば、今後配布とか、自分でも有効利用ができるので。
総じていうと、これまで、xamppでのローカル環境でしたが、ちょうどいい機会なので、もろもろ試す意図が大きいです。
実際のローカル環境は
- Windows7 64bit
- メモリ:8G
- SSD 128GB (残20GB未満)ヤバイ・・・
###手順
- 必要なもの入手(cygwin、virtualbox、vagrant)
- virtualbox設定
- 2.からbox作成
- 作成したboxからvmを起動する
macにしたい。。
###1. 必要なもの入手
=> 上記とおり、インストールまで完了する。
=> win版でインストールまで完了しておく
※【Cygwinで Vagrantを利用するための設定】をしておいてください。
dos2unix /cygdrive/c/HashiCorp/Vagrant/bin/vagrant
VagrantのVirtualBoxで利用するboxを作成 CentOS(6.4) ver. - Done is better than Perfect
=> virtualboxのインストールまで行っておく。ほぼこの通りに実行していきますが、vmの設定やbox作成等の詳細は、後の手順でも詳述します。
また、上記で使うイメージファイルがなければ、下記より取得しておいてください。
※ご使用になりたいバージョンのものを選択してください
###2.VirtualBox の設定
- 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
-
起動すると、最初に「Welcome to CentOS 6.4!」の画面が表示されます。
「Install or upgrade an existing system」を選択してEnter -
Disc Found Skipを選択
-
Unsupported Hardware Detected OK
-
CentOS OK
-
Language Selection
English -
Keyboard Selection
US -
Warning
Warningがでるが、ここは「Re-initialize-all」を選択 -
Time Zone Selection
Asia/Tokyoを選択 -
Root Password
vagrant
※Weak Passwordのアラートがでるが、ここはvagrantで設定する必要がある。 -
Partitioning Type
Use entire drive -
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ユーザ用の公開鍵を配置
- su - vagrant
- mkdir ~/.ssh
- chmod 0700 ~/.ssh
- curl -L -o ~/.ssh/authorized_keys https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub
- chmod 0600 ~/.ssh/authorized_keys
###VirtualBox の Guest Additions をインストール
ここからは、cygwin(じゃなくていいんですが、)でvmにログイン後、まず、wgetできるようにしてから、vagrant公式ドキュメントのとおりにインストールしてきます。
- yum install -y wget
- wget wget http://download.virtualbox.org/virtualbox/4.3.20/VBoxGuestAdditions_4.3.20.iso
※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.)
- cd /usr/local/src/
- wget http://mirror.switch.ch/ftp/pool/4/mirror/scientificlinux/6.3/i386/updates/security/kernel-devel-2.6.32-504.el6.i686.rpm
- rpm -ivh kernel-devel-2.6.32-504.el6.i686.rpm
rm VBoxGuestAdditions_4.3.8.iso - sh /media/VBoxGuestAdditions/VBoxLinuxAdditions.run (再度実行)
がエラー。。。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エラー解決