最近、Vagrantのprovisionerを使ってパッケージの作成などをいくつか行っているのですが、その際にVMを落とし忘れ、ホストしてるマシンの余計なリソースを使ってしまっていることがあります。

なので、provisionerでサーバをdestroy/haltするやつを書いてみました。

rubygems: https://rubygems.org/gems/vagrant-destroy-provisioner
github: https://github.com/kazeburo/vagrant-destroy-provisioner

勝手にshutdownしてイメージを破棄するデモ動画です。

インストールはvagrant pluginコマンドから行います。

$ vagrant plugin install vagrant-destroy-provisioner

使い方はこんな感じ

VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "CentOS-6.4-x86_64-v20131103"
  config.vm.box_url = "http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20131103.box"
  config.vm.provision "shell", inline: "echo 'Hello Provisioner'"
  config.vm.provision "destroy"
end

VMのshutdownだけをするモードも一応サポートしていて

config.vm.provision "destroy", destroy: false

とすると、vagrant halt相当のみ実行されます。destroyオプションのデフォルトはtrueです。

Docker Provisionerを使う場合は、destroy: falserun: "always" を使うと多分便利。先日のPerl-Buildのfatpackの例だと

 config.vm.provision "docker", run: "always" do |d|
    d.build_image "/perl-build/author",
        args: "-t perl-build"
end
config.vm.provision "shell", run: "always",
    inline: "docker run -v /perl-build:/perl-build perl-build"
config.vm.provision "destroy", destroy: false, run: "always"

となります。毎度 vagrant up に —provision オプションを付けなくても良いので楽。

vagrant-destroy-provisionerを使うと、VMの使い捨てが自動化されて非常に便利。どうぞご利用ください。

以下のgems、サイトを参考にしました。

https://rubygems.org/gems/vagrant-reload

vagrantのprovisionerを自作する - Qiita

このブログ記事について

このページは、Masahiro Naganoが2014年6月16日 13:39に書いたブログ記事です。

ひとつ前のブログ記事は「plenvやxbuildで使っているperl-buildを信頼性の向上目指してアップデートしました」です。

次のブログ記事は「GitHubとDocker HubのAutomated Buildを組み合わせてGrowthForecastのDocker imageの作成を自動化したハナシ」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

OpenID対応しています OpenIDについて
Powered by Movable Type 4.27-ja