Vagrant

参考


Windowsにてシェルスクリプトで頑張るVagrant(CentOS)

VirtualBoxVagrant だけ(ChefPuppetAnsible もプラグインも無し)で、動かしたい。


ディレクトリ構成

vagrantディレクトリを用意し、3つのファイル(provision.sh Vagrantfile vup.bat)を用意し、 vup.bat を実行する。
vagrant_log www ディレクトリは vup.bat (vagrant up)実行時に自動生成される。

├─vagrant
│  │  provision.sh
│  │  Vagrantfile
│  │  vup.bat
│  │
│  └─.vagrant(自動生成: ``vagrant up`` 実行時に生成されるやつ)
│      └─省略
│
├─vagrant_log(自動生成: ``vup.bat`` 実行時のログ)
│      yyyymmddhhmmss.up.err.log
│      yyyymmddhhmmss.up.out.log
│
└─www
        phpinfo.php

vup.bat

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
@ECHO OFF

SETLOCAL
SET dir_log=..\vagrant_log\
IF NOT EXIST %dir_log% MKDIR %dir_log%
SET dt=%DATE%
SET tm=%TIME: =0%
IF "%tm:~0,5%"=="00:00" SET dt=%DATE%
SET now=%dt:~-10,4%%dt:~-5,2%%dt:~-2,2%%tm:~0,2%%tm:~3,2%%tm:~6,2%
vagrant up > %dir_log%%now%.up.out.log 2> %dir_log%%now%.up.err.log
ENDLOCAL

config.vm.synced_folder について

注釈

  • Windows(ホスト側)で、CentOS(ゲスト側)のVagrant環境構築。
  • デフォルトで、 Vagrantfile がある(vagrant up した)ディレクトリーが、 ゲスト側(CentOS)の /vagrant と同期する。

警告

  • config.vm.synced_folder で同期したディレクトリー配下は、 chown (所有者の変更) chmod (パーミッションの変更)が無効
  • httpd のインストール前は apache ユーザーが無いので、config.vm.synced_folder の設定に apache を使用するとエラーとなる。 (設定を vagrant ユーザーにしておいて、 httpd.conf を書き換える手段も。。)
sed -i -e "s/^User apache$/User vagrant/g" /etc/httpd/conf/httpd.conf
sed -i -e "s/^Group apache$/Group vagrant/g" /etc/httpd/conf/httpd.conf

==> default: Booting VM... で止まってしまったときの対処法

vagrant up で、==> default: Booting VM... で止まってしまった場合、

  1. とりあえず、 vagrant halt vagrant destroy で破棄を試みる。(帰ってこなかったら、[Ctrl+c]で強制終了)
  2. タスクマネージャーを起動し、 VBoxHeadless.exe VBoxSVC.exe のプロセスを終了させる。
  3. VirtualBox マネージャーを起動し、左ペインにある、起動に失敗したVMを右クリックし、[除去]→[すべてのファイルを削除]
  4. もう一度 vagrant up を試みる