provisionでなぜか2回スクリプトが実行されて悩んだ

railsのインストールするスクリプトを書いて、これを vagrant provision で実行すればOKだ。と試してみたところ、確かにちゃんと入る。しかしなぜか2回実行されてしまう。


いろいろ調べていたら、二箇所Vagrantfileがあった。一箇所はvagrant initしたところ。もう一箇所はC:\Users\<僕のWinアカウントう>\.vagrant.d\boxes\centos_6_4_dec16\virtualbox\include\_Vagrantfile にあった。そして、両方実行されていた模様。

vagrant package としてboxを作るときに、vagrant package --output centos_6_4_dec16 --include scripts/install_rails.sh --vagrantfile Vagrantfile とやって、Vagrantfileとinstall_rails.shまで含めてbox化したのが癌だった様だ。


とりあえずやってみようと、_Vagrantfileというファイルのprovisionしてるところをコメントアウトしたら問題なくできました。いろいろわからないことが多くて大変です……


なお、install_rails.shはこちら。

#!/bin/bash

LOGFILE=rails_`date "+%y%m%d-%H%M%S"`.log

function eo {
  echo "$1"    | awk '{print strftime("%y/%m/%d %H:%M:%S :"), $0}' | tee -a ${LOGFILE}
  eval $1 2>&1 | awk '{print strftime("%y/%m/%d %H:%M:%S :"), $0}' | tee -a ${LOGFILE}
}

if [ ! -d apps ]; then
	eo "mkdir apps"
fi
eo "sudo yum -y install sqlite-devel"
eo "sudo gem install rails --no-ri --no-rdoc"
eo "sudo gem install bundler --no-ri --no-rdoc"
eo "sudo rbenv rehash"
eo "cd apps; rails new test1 --skip-bundle"
eo "echo 'gem \"therubyracer\", platforms: :ruby' >> apps/test1/Gemfile"
eo "cd apps/test1; sudo bundle install"
eo "sudo rbenv rehash"
eo "cd apps/test1; rails server -d"
eo "sleep 20"
eo "curl http://0.0.0.0:3000/ > rails.html"
eo "head rails.html"
eo "chown -R vagrant rails.html apps"