長いタイトルですみません…。
Vagrantを使ってChef-soloのデモをしようとして、なんどもVMを作ったり壊したりしているんですが、 『3回以上同じことをするならJenkins化』 というマイルールにより、Jenkinsからvagrant up / vagrant destroyするようにしてみました。
VMのイニシャライズ、起動はうまくいって、レシピも適用されて、『いいねー』と思っていたのですが、Chefの実行 -> ジョブの完了後、JenkinsではなくターミナルからVMにアクセスしようとすると、アクセスできません…。
VirtualBoxの画面から見ると、確かにVMは起動しているようなんですが、VirtualBoxの画面からもアクセスができなくなってしまいます。
vagrant status すると、下記のような "aborted" な状態に…
$ vagrant status
Current machine states:default aborted (virtualbox)
The VM is in an aborted state. This means that it was abruptly
stopped without properly closing the session. Runvagrant up
to resume this virtual machine. If any problems persist, you may
have to destroy and restart the virtual machine.
せっかくレシピが適用されたんだから、そのままVMが起動してて欲しいこともあります。(レシピのテスト、serverspecの実行なら、毎回綺麗に作り直しでも良いと思いますが)
あれれ〜と思って、検索したところ、下記がHit.
- http://stackoverflow.com/questions/19736862/vagrant-aborted-at-end-of-jenkins-job
- https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller
JenkinsのProcess Killerによるものだそう。なるほど…。
で、上記の情報を頼りに、今回はJob単位でこの設定を切り替えたいので、ビルドのステップで
BUILD_ID=dontKillMe vagrant up
という設定としました。
これで幸せになりました(^^