NnmnLog

Vagrantで自分用のboxを作成して、起動を高速化したい

作成: 2021-02-23
更新: 2021-02-23
タグ: Vagrant

はじめに

bento/amazonlinux-2で複数の仮想マシンを作成していたのですが、仮想マシン作成時に時間がかかり辛くなってきたので、作成時間を短縮する方法を調べました。

僕の環境では、vagrant-vbguestプラグインが入っているので、vagrant upしたときにこの初期化処理に時間がかかっているようでした。

vagrant-vbguestの初期化処理が完了した状態のベースイメージがあれば少しはましになりそうです。

環境

  • Host OS: Windows 10 Home Edition
  • Virtual Box 6.1.18
  • Vagrant 2.2.14

ベースイメージ作成方法

  1. bento/amazonlinux-2を使ったVagrantfileを作成します。
    > mkdir -p my-vagrant-base/amazon-linux-2
    > cd my-vagrant-base/amazon-linux-2
    > vagrant init bento/amazonlinux-2
    
  1. Vagrantfileを以下のように編集します
    # -*- mode: ruby -*-
    # vi: set ft=ruby :

    Vagrant.configure("2") do |config|
      config.vm.box = "bento/amazonlinux-2"
    end
    
  1. 仮想マシンを起動します
    > vagrant up
    
  1. 仮想マシンを停止し、vagrant packageコマンドでboxを作成します

    package.boxというファイルが作成されます。

    > vagrant package
    
  1. 作成したboxを追加します
    > vagrant box add nnmn/amazonlinux-2 package.box
    

以上でboxの作成は終わりです。

まとめ

別のVagrantfileconfig.vm.box = "nnmn/amazonlinux-2"のように追加したbox名を設定して使うことができます。

仮想マシン1台の起動に5~10分程度かかっていたものが、2~3分程度になりました。

3台の仮想マシンを同時に作成したときは、20~30分ほど待たされていたので、改善されてよかったです。