Install chef script on Vagrant

Vagrantの小ネタです。 ChefでElasticSearchをVagrantにインストールしようとしたところ、Chefのバージョンが10で上手く入らないということがありました。 手動でChefをインストールしてbox化しても良かったのですが、そのboxを使い続けないといけなくなってしまうので、インラインスクリプトで実行することにしました。

config.vm.provision :shell, :inline => <<-EOS
    chef-solo --version | grep "Chef: 11.*.*" || curl -L https://www.opscode.com/chef/install.sh | sudo bash
  EOS

こんなコードをconfig.vm.provisionの前に書いてやることで、Chefの実行前にVersion11が入っていなければインストールすることが出来ます。


ついでにもう一発Vagrantの小ネタです。 最近、会社の方で使用していたVagrantのboxとChefでインストールしていたrpmとかバイナリの一部をS3+CloudFrontに移しました。 約500Mb〜600Mbをdropbox、s3とかから取得していて30〜40分ほどかかっていたので、ものは試しにと移してみると5〜10分ほどまで短縮することができました。

vagrant-lxcとかvagrant-openvzでコンテナ自体の起動を早くするのも有りですが、初期化処理を早くするというのも有りですね。