Vagrand, Puppet, Guard (3)

実行されてる試験としては取得したログによれば順に

ということな模様。前半で puppet な文法ベースな確認をして、仮想ホストが用意できたら実機ベースで確認、という流れなのか。
おそらくは Guard がハンドルしてるに違いないはずなのですが、根拠は Guardfile なのかどうなのか。

色々見てて

Guardfile に以下な記述を発見。

# This block simply calls vagrant provision via a shell
# And shows the output
def vagrant_provision
  IO.popen("vagrant provision && rake validate") do |output|
    while line = output.gets do
      puts line
    end
  end
end

vagrant provision は Puppet 起動してマニフェスト盛り込んでるし rake validate は cucumber な試験の実行だな。てことはここに vagrant box add/remove あたりを盛り込んであげれば良いのかどうなのか。
でも、現状 vagrant up な挙動が微妙。
しかも微妙なエラーメセジが出力されるようになっとるな。

[default] The guest additions on this VM do not match the install version of
VirtualBox! This may cause things such as forwarded ports, shared
folders, and more to not work properly. If any of those things fail on
this machine, please update the guest additions and repackage the
box.

Guest Additions Version: 4.1.0
VirtualBox Version: 4.1.8

むむ。こんな微妙なメセジは出てなかったような気がしてるんですが。
とは言え、端末上で apt-cache show virtualbox-4.1 してみたら 4.1.8 って出ますね。

試しに

vagrant box remove して vagrant box add した後に vagrant provision したら固まりました。これは困った。

結果

以下に修正して guard 実行したら試験もパスして仮想ホストも delete されてますね。

def vagrant_provision
#  IO.popen("vagrant provision && rake validate") do |output|
  IO.popen("vagrant box add lucid64 ./package.box && " + 
           "vagrant provision && rake validate &&" + 
	   "vagrant box remove lucid64") do |output|

ちなみに標準出力の末端が以下。

6 scenarios (6 passed)
18 steps (18 passed)
0m10.857s
[vagrant] Deleting box 'lucid64'...
> 

次はこないだ作った capistrano なソレを Puppet で実装の巻です。