Vagrantは仮想マシンをすぐ作ってすぐ廃棄してすぐ作り直す、なんてことがとてもやりやすいのが利点ではあるが、作った仮想マシンのうちいくつかはしばらく廃棄せず維持しなければならないことも当然良くあることである。

そんな状況で、破棄すべき仮想マシンのVagrantfileが置かれたディレクトリでvagrant destroyを打つのを何度も繰り返しているうちに、誤って廃棄してはならない仮想マシンのVagrantfileがあるディレクトリでvagrant destroyを実行したりしそうになったり、なんてこともあるかもしれない。

そこでvagrant destroyを誤って実行してVMが破棄されるのを防ぐには、Vagrantfileの最初の方にvagrant destroyを阻止するコードを追加してやれば良い。

Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

if ARGV.include?('destroy')
  puts 'vagrant destroy is not allowed'
  exit 1
end

(以下省略)

これでもうこのVagrantfile下ではvagrant destroyは通らないので、恐怖に怯えることなく他でvagrant destroyを実行することができる。

もし本当にvagrant destroyを実行すべき時がやってきたら、このif-endを取り除いてからvagrant destroyをすることになる。

また、これを応用すればvagrant haltも禁止とか、Vagrantfileで複数VMを管理しているがそのうち1台だけdestroyされると困る場合とかの処理も書くことができるだろう。

TOP