プラグインのせいで遅くなったvagrant upを高速化する方法

vagrant upを高速化するためのポイント

  • GuestAdditionsと最新のChefが入った仮想マシンをもとに新しいBoxを作る
  • そのBoxを使ってvagrant upする
これにより、GuestAdditionsのインストールとChefのインストールの過程をすっ飛ばすことができるので起動が大幅に速くなります。
私の環境だと10分かかっていたのが2分半くらいまで短縮されました。

vagrant upを高速化するための手順

まず、公開されているBoxを取得してきてaddします。
名前を仮にmybaseboxとします。
vagrant box add mybasebox 公開BOXのURL
mkdir ~/tmp/vagrant1
vagrant init mybasebox
Vagrantfileを編集して、"config.omnibus.chef_version = :latest"と1行記述します。(omnibusプラグインが必要です)
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "mybasebox"
  config.omnibus.chef_version = :latest
end
編集したら仮想マシンを起動します。
vagrant up
これで、種Boxをもとに新規仮想マシンが起動されてGuestAdditionsと最新のChefのインストールが行われます。(長時間待たされますがガマンです)

変更を加えた仮想マシンをもとに新しいパッケージを作成する

vagrant halt
vagrant package
これにより、カレントディレクトリに"package.box"というファイルが生成されます。
これをbox addしてやります。
vagrant box add mynewbox package.box
# addしたらpackage.boxは不要なので削除
rm package.box
これで、最新のGuestAdditionsと最新のChefが入った種Boxができあがりました!
今後この種Boxをもとにvagrant upしたい場合は、
vagrant init mynewbox 
vagrant up
高速にvagrant upすることができます。

Happy vagrant up!

参考

Vagrantのboxに少しだけ手を加えたものをboxとして取っておきたい
カテゴリ: